JPA(Java Persistence API/Jakarta Persistence API)
JPA 의 P (Persistence)
영속성 컨텍스트(Persistence Context)
build.gradle 의존 라이브러리 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
...
}
JPA 설정(application.yml)
spring:
h2:
console:
enabled: true
path: /h2
datasource:
url: jdbc:h2:mem:test
jpa:
hibernate:
ddl-auto: create # (1) 스키마 자동 생성
show-sql: true # (2) SQL 쿼리 출력
샘플 코드 실행 위한 Config 예시
@Configuration
public class JpaBasicConfig {
private EntityManager em;
private EntityTransaction tx;
@Bean
public CommandLineRunner testJpaBasicRunner(EntityManagerFactory emFactory) {
this.em = emFactory.createEntityManager();
this.tx = em.getTransaction();
return args -> {
tx.begin();
Member member = new Member("hgd@gmail.com");
em.persist(member);
tx.commit();
Member resultMember = em.find(Member.class, 1L);
System.out.println("Id: " + resultMember.getMemberId() +
", email: " + resultMember.getMemberEmail());
}
}
JPA API Methods
Method | 설명 |
---|---|
em | EntityManager. EntityManagerFactory에서 createEntityManager 메서드 통해 가져온다 |
tx | EntityTransaction. EntityManager에서 getTransaction 메서드 통새 가져온다 |
tx.begin() | Transaction 실행 위한 메서드 |
em.persist() | 영속성 컨텍스트에 엔티티 저장 |
tx.commit() | 메서드 호출 시 영속성 컨텍스트에 저장되어있는 객체를 DB에 적용 |
em.flush() | tx.commit() 메서드 호출 시 JPA 내부적으로 호출되어 영속성 컨텍스트 변경내용을 DB에 반영 |
em.find(.class, ) | 영속성 컨텍스트에서 데이터 조회 |