본문 바로가기
Book

자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (2) JPA 시작

by devLog by Ronnie's 2022. 7. 10.

들어가며


스터티 두번째 장인 2강. 특이점은 책에서는 xml 파일인 설정값에 대해서 설명이 되어 있지만 현재 회사에서 사용하고 있는 yml 파일에 jpa 부분을 분석하기로 하여 정리하였다.

 

 

2장

 

JPA 관련 yml 파일 설정


  • ddl-auto -> none / create-drop / create / update / validate
  • naming : physical-strategy: com.vladmihalcea.hibernate.type.util.CamelCaseToSnakeCaseNamingStrategy
  • properties.hibernate.default_batch_fetch_size
  • properties.hibernate.order_inserts, updates

 

2.6.1 엔티티 매니저 설정


  • 엔티티 매니저 팩토리 생성
  • 엔티티 매니저 생성
  • 종료

 

2.6.2 트랜잭션 관리


  • Jpa 를 사용하면 항상 트랜잭션 안에서 데이터를 변경해야 한다.
  • 트랜잭션 없이 데이터 변경하면 예외 발생 -> 롤백함

 

2.6.3 비즈니스 로직


  • 비즈니스 로직을 보면 CRUD 작업이 엔티티 매니저를 통해서 수행되는 것을 알 수 있다.
  • 등록 : 엔티티를 저장하려면 엔티티 매니저의 persist() 메서드에 저장할 엔티티를 넘겨주면 된다. JPA는 넘겨받은 엔티티의 매핑 정보를 분석해서 SQL을 만들어 데이터베이스에 전달한다.
  • 수정 : set() 메서드를 사용해서 수정한다. update() 메서드가 없는 것은 set()을 사용하면 알아서 update 문으로 sql 쿼리를 날린다.
  • 삭제 : remove() 메서드 사용 -> DELETE 쿼리 날림
  • 조회 : find() 메서드는 조회할 엔티티 타입과 @Id로 테이블의 기본 키와 매핑한 식별자 값으로 엔티티 하나를 조회하는 가장 단순한 조회 메서드

 

2.6.4 JPQL


  • Jpa를 사용하면 애플리케이션 개발자는 엔티티 객체를 중심으로 개발하고 데이터베이스에 대한 처리는 JPA에게 맡겨야 함
  • CRUD와 같은 기본 기능은 SQL 전혀 사용하지 X
  • 하지만 애플리케이션이 필요한 데이터만 데이터베이스에서 불러오려면 결국 검색 조건이 포함된 SQL문 사용 필요 -> 이때 JPQL을 사용하여 문제 해결 가능
  • Jpa는 SQL을 추상화한 JPQL이라는 객체지향 쿼리 언어를 제공 (SQL과 문법이 거의 유사해서 SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 사용 가능)
  • JPQL 엔티티 객체를 대상으로 쿼리를 한다. (SQL 데이터베이스 테이블을 대상으로 쿼리함)

댓글