create database shop default character set utf8 collate utf8_general_ci;
MySQL로 'shop' 데이터베이스 만듦
한글 데이터 저장을 위해 utf8 설정했음
show database로 확인 가능
JPA
학습에 앞서서 영속성이란 무엇일까?
영속성(persistence)은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.
ORM Object Relational Mapping 의 약자로 객체와 관계형 데이터베이스를 매핑해주는 것을 말함
보통 객체지향을 이용해서 관계형 데이터베이스를 접근할 때
데이터베이스에 넣을때 sql문을 통해 변환해서 저장하고, 또 다시 꺼내오기 위해서 복잡한 sql문을 작성함
이렇기 때문에 ORM 기술이 등장
JPA는 ORM 자바에서 제공하는 API임
- JPA를 대표적으로 구현한 것은 Hibernate, EclipseLink , DataNucleus, OpenJpa, TopLink등이 있음
가장 많이 사용하는것이 Hibernate(하이버네이트)
장점
1. JPA 사용하면 좀 더 객체지향적 프로그래밍 가능
2. 데이터베이스에 종속되지 않음. ex) mysql , oracle , mariadb 등등 추상화 데이터 접근이므로 언제든지 데이터베이스 변경 가능
3. sql문 직접 작성하지 않고 객체를 사용해서 동작
단점
1. 성능 저하
2. 높은 러닝 커브
동작은 어떻게 할까?
엔티티(테이블에 대응하는 클래스)
@Entity가 붙은 클래스는 JPA에서 관리하며 엔티티라고 함.
DB에 TEST 테이블을 만들고 TEST.JAVA를 만들어서 @Entity 어노테이션을 붙이면 엔티티가 생성
Test test = new Test();
test.setTestName("개발 테스트");
EntityManger em = entityMangerFactory.createEntityManger();
EntityTransaction transaction = em.getTransaction();
transaction.begin();
em.persiste(Test);
transaction.commit();
em.close();
emf.close();
엔티티 하나 생성
엔티티 매니저 팩토리 부터 엔티티 매니저 생성
트랜잭션을 시작
생성한 상품 엔티티가 영속성 컨텍스트에 지정된 상태 persiste 부분
transaction.commit()하는 부분이 영속성 컨텍스트에 저장되는 부분, 저장된 상품이 INSERT하면서 반영됨
close()메소드를 호출해서 사용한 자원을 반환
중간계층 Persistance Context를 만들면 버퍼링 , 캐싱 등 기억해서 사용 가능
'SpringBoot' 카테고리의 다른 글
카카오페이 API 결제 TEST 연결 (0) | 2024.08.13 |
---|---|
SpringBoot : OCR 화면 번역 프로그램 만들기 ( API 사용 ) (0) | 2024.07.11 |
[스프링부트] Hiberante 설정 , db연결 , 열거형 패키지 생성 (0) | 2022.04.18 |
[스프링 부트] @RestController , application.properties , mapping , target 파일 (0) | 2022.04.12 |