궁금한 것
‣
1장 JPA 소개
JPA를 사용해야하는 이유
- DB와 객체지향 사이에 패러다임 차이가 존재하는데 그걸 메꿔주는 역할을 한다.
- 객체는 참조로 연관관계를 맺지만, DB는 FK를 이용하여 연관관계를 맺는다.
- 객체 그래프를 탐색할 때 순수 자바라면 맘놓고 객체 참조를 따라갈 수 있지만, SQL 위주의 프로그래밍을 했을 경우 실제 나간 SQL 문에 따라서 객체 참조가 한정되어진다.
- JPA에서는 객체 참조를 맘놓고 할 수 있으며, 실제로 사용할때 select 쿼리가 나가는 지연 로딩 기능을 지원한다.
- SQL을 사용하면 동등 비교가 어렵다. JPA에서는 같은 트랜잭션일 때 같은 객체가 조회되는 것을 보장한다. → == 비교도 가능함
- 단순 CRUD 코드들은 JPA에서 간단하게 만들어주고, 이 때 엔티티에 필드 하나 추가된다고 관련 모든 코드를 수정할 필요없이 JPA 단에서 해결해준다. → 유지보수성 좋음
- DB 접근 추상화를 시켜준다. DB를 바꾸게되도 dialect 설정만 변경하면 돼서 쉽게 다른 DB로 갈아끼울 수 있다.
2장 JPA 시작
JPA를 사용하는 흐름
- EntityManageFactory 생성
→ JPA 구현체에 따라서 커넥션 풀도 생성하므로 생성비용이 아주 높음. 따라서 애플리케이션 전체에서 딱 한번만 생성하고 공유해서 사용해야한다.
- EntityManager 생성
→ 엔티티 매니저는 내부에 데이터 소스(DB connection)을 유지하면서 DB와 통신한다. em은 데이터베이스 커넥션과 밀접한 관계가 있으므로 스레드 간에 공유해서 재사용하면 안된다.
- em으로부터 Transaction 흭득