DEV/JPA
[JPA] 시작하기, 기본 설정
Imvory
2024. 2. 14. 02:40
* 정보전달의 목적이 아닌 개인 스터디 정리 글 입니다.
강의 : 인프런 <자바 ORM 표준 JPA 프로그래밍 기본편>
교육자 : 김영한
JPA 시작하기
1. pom.xml에 JPA 하이버네이트, 사용할 데이터베이스 세팅
<dependencies>
<!-- JPA 하이버네이트 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.4.2.Final</version>
</dependency>
<!-- H2 데이터베이스 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.2.224</version>
</dependency>
</dependencies>
2. /META-INF/persistence.xml JPA 설정파일 생성
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="hello">
<properties>
<!-- 필수 속성 -->
<property name="jakarta.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="jakarta.persistence.jdbc.user" value="sa"/>
<property name="jakarta.persistence.jdbc.password" value=""/>
<property name="jakarta.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<!-- 옵션 -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
<!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
</properties>
</persistence-unit>
</persistence>
* Java 17은 클래스명이 javax 에서 jakarta로 변경되었으니 유의
* JPA의 경우 특정 데이터베이스에 종속되지 않는 장점이 있음
→ hibernate.dialect 속성에 지정
JPA 구동방식
1. JPA 설정파일 조회
2. 엔티티 매니저 팩토리 생성
3. 엔티티 매니저 팩토리에 의해 엔티티 매니저들을 생성
주의사항
* 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체 공유
* 엔티티 매니저는 쓰레드간에 공유하지 않음(사용하고 버리기!)
* JPA의 모든 데이터 변경은 트랜잭션 안에서 실행