Spring/[인프런 김영한 자바 ORM 표준 JPA 프로그래밍 - 기본편]
[인프런 김영한 자바 ORM 표준 JPA 프로그래밍 - 기본편] JPA 시작하기
h2boom
2024. 8. 19. 16:01
JPA 설정
- Maven : 자바 라이브러리 빌드 관리 툴이다.
- 라이브러리 자동 다운로드 및 의존성 관리를 해준다.
- 최근에는 Gradle을 더 많이 사용하는 추세이다.
- Maven 빌드를 사용하는 경우
- porm.xml에 필요한 라이브러리를 추가해준다.
- JPA 설정하기 - persistence.xml
- /resources/META-INF/persistence.xml 위치
- persistence-unit name으로 이름 지정
- javax.persistence로 시작: JPA 표준 속성
- hibernate로 시작: 하이버네이트 전용 속성
- Database 관련 속성과 옵션을 지정한다.
- JPA는 특정 데이터베이스에 종속되지 않는다.
- 방언 : SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능
- 데이터베이스 방언
- 특정 데이터베이스에 맞는 방언을 hibernate.dialect 속성에 지정해줘야 한다.
- JPA 구동 방식
- Persistence가 META-INF/persistence.xml의 이름을 조회해서 내용을 기반으로 EntityManageFactory를 생성한다.
- EntityManagerFactory는 EntityManager 들을 생성한다.
- Java 8 버전보다 높은 경우 javax 라이브러리를 내장하고 있지 않기 때문에 porm.xml에 의존성 추가가 필요하다.
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
- 주의 사항
- EntityMangerFactory는 애플리케이션 로딩 시점에 딱 한 개만 만들어져 있어야 한다.
- 웹 서버가 올라오는 시점에 한 개만 생성 = DB 당 한 개만 생성된다.
- EntityManager는 클라이언트의 요청이 올 때마다 생성해서 사용하고 버려야한다(반납한다).
- EntityManger는 스레드간 절대로 공유하면 안된다.
- 항상 다 사용하고 나면 close 해야한다.
- JPA에서 데이터를 변경하는 모든 작업은 트랜잭션 안에서 작업이 되야한다.
- 단순 조회가 아닌 이상 트랜잭션을 EntityManagerFactory를 통해 트랜잭션을 받아와서 시작하고 내용을 commit 해줘야한다.
- EntityMangerFactory는 애플리케이션 로딩 시점에 딱 한 개만 만들어져 있어야 한다.
- JPA 사용 - 객체, 테이블 매핑
- 매핑할 클래스에 @Entity로 선언해줘야 JPA가 관리하는 객체 대상이 된다.
- 매핑할 클래스에 별도로 지정해주지 않으면 클래스명 = 테이블명
- @Table(name= "~")으로 별도의 테이블 명으로 매핑해줄 수도 있다.
- 필드명도 마찬가지로 별도로 지정하지 않으면 필드명 = 컬럼명
- @Column(name="~")으로 별도의 컬럼명으로 매핑할 수 있다.
- @Id로 객체의 필드를 PK로 매핑할 수 있다.
- JPA 에서 관리하는 객체를 가져와서 수정하면 따로 반영해주지 않아도 자동으로 변경된다.
- 트랜잭션이 커밋하는 시점에 체크를 하기에 변경사항이 있으면 자동으로 UPDATE 쿼리를 날려서 반영시키고 커밋한다.
- JPQL : JPA에서 자동으로 작성해주는 쿼리 외에 복잡한 검색 쿼리등을 직접 작성해서 사용할 수 있도록 지원하는 쿼리 작성 기능
- JPA에서 SQL을 추상화해서 제공하는 객체 지향 쿼리 언어가 JPQL이다.
- JPQL은 엔티티 객체를 대상으로 쿼리
- SQL은 데이터베이스 테이블을 대상으로 쿼리
- SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다.
- JPQL = 객체 지향 SQL
- ex) 나이가 몇 살 이상인 회원 모두 검색과 같은 조건 검색의 경우에 사용한다.
- JPA에서 SQL을 추상화해서 제공하는 객체 지향 쿼리 언어가 JPQL이다.
출처: [인프런 김영한 자바 ORM 표준 JPA 프로그래밍 - 기본편]
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 | 김영한 - 인프런
김영한 | JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 실무에서도
www.inflearn.com