Last updated
Last updated
Java Persistence API는 객체를 관계형 데이터베이스에 "매핑"할 수있는 표준 기술입니다. spring-boot-starter-data-jpa
POM은 시작하는 빠른 방법을 제공합니다. 다음과 같은 주요 종속성을 제공합니다.
Hibernate : 가장 인기있는 JPA 구현 중 하나.
Spring Data JPA : JPA 기반 리포지토리를 쉽게 구현할 수 있습니다.
Spring ORMs : Spring Framework의 핵심 ORM 지원.
전통적으로 JPA "Entity"클래스는 persistence.xml
파일에 지정 됩니다. Spring Boot를 사용하면 이 파일은 필요 없으며 "Entity Scanning"이 대신 사용됩니다. 기본적으로 기본 구성 클래스 ( @EnableAutoConfiguration
또는로 주석 처리 된 패키지) 아래의 모든 패키지 @SpringBootApplication
가 검색됩니다.
모든 클래스는 주석 @Entity
, @Embeddable
또는 @MappedSuperclass
간주됩니다. 일반적인 엔티티 클래스는 다음 예제와 유사합니다.
다음 예제는 일반적인 스프링 데이터 저장소 인터페이스 정의를 보여줍니다.
Spring 데이터 JPA 저장소는 세 가지 다른 부트 스트래핑 모드를 지원합니다 : default, deferred, and lazy. deferred or lazy 부트 스트랩을 사용하려면 spring.data.jpa.repositories.bootstrap-mode
을 각각 deferred
또는 lazy
설정하십시오. deferred or lazy 부트 스트랩을 사용할 때, 자동 구성된 EntityManagerFactoryBuilder
는 컨텍스트를 AsyncTaskExecutor
를 부트 스트랩 실행 프로그램으로 사용합니다 (있는 경우). 둘 이상이 있으면 이름 applicationTaskExecutor
이 지정된 이름으로 사용됩니다.
deferred or lazy의 차이점은 다들 모른대..
기본적으로 JPA 데이터베이스는 내장 데이터베이스 (H2, HSQL 또는 Derby)를 사용하는 경우 에만 자동으로 생성 됩니다 . spring.jpa.*
특성 을 사용하여 JPA 설정을 명시 적으로 구성 할 수 있습니다 . 예를 들어, 테이블을 작성하고 제거하려면 다음 행을 application.properties
다음에 추가 할 수 있습니다 .
앞의 예제에서의 라인은 hibernate.globally_quoted_identifiers
프로퍼티 에 대한 true
값을 Hibernate 엔티티 관리자로 전달한다.
기본적으로 DDL 실행 (또는 유효성 검사)은 ApplicationContext
시작될 때까지 연기 됩니다. spring.jpa.generate-ddl
플래그 도 있지만 Hibernate 자동 구성이 활성화되어 있으면 ddl-auto
설정이 더 세밀 하기 때문에 사용되지 않습니다 .
리포지토리는 데이터에 액세스하기 위해 정의 할 수있는 인터페이스입니다. JPA 쿼리는 메소드 이름에서 자동으로 작성됩니다. 예를 들어, CityRepository
인터페이스는 findAllByState(String state)
메소드를 선언하여 주어진 상태에서 모든 도시를 찾는 할 수 있습니다 .
보다 복잡한 쿼리의 경우, Spring 데이터의 annotation으로 메소드에 주석을 달 수 있습니다 .
Spring 데이터 저장소는 일반적으로 또는 인터페이스 에서 확장 됩니다. 당신이 자동 구성을 사용하는 경우, 저장소는 기본 구성 클래스 ( @EnableAutoConfiguration
또는 @SpringBootApplication
주석 이 포함 된 패키지)에서 저장소가 검색됩니다.
웹 어플리케이션을 실행하고 있다면 Spring Boot는 기본적 으로 웹 뷰에서 느슨한 로딩을 허용하기 위해 "View에서 EntityManager 열기"패턴을 적용하도록 등록 합니다. 이 동작을 원하지 않는 경우, 당신은application.properties
에서 spring.jpa.open-in-view
을 false
으로 정해야합니다.
JPA 또는 Spring Data에 대한 세부 정보는 여기에 포함되지 않습니다. spring.io에서 "JPA로 데이터 접근하기"가이드를 따르고 Spring Data JPA와 Hibernate 참조 문서를 읽을 수있다.
@EntityScan
어노테이션 을 사용하여 엔티티 스캐닝 위치를 사용자 정의 할 수 있습니다 . " 84.4 절."Spring 구성과 @Entity 정의의 분리 " 절을 참조하십시오 .
Spring Data JPA의 표면을 간신히 긁어 모았습니다. 자세한 내용은 Spring 데이터 JPA 참조 문서를 참조 하십시오 .
이것에 대한 Hibernate의 내부 속성 이름 (만약 당신이 그것을 더 잘 기억한다면)이있다 hibernate.hbm2ddl.auto
. 다른 Hibernate 네이티브 프로퍼티들과 함께 이것을 사용할 수있다. spring.jpa.properties.*
(접두사는 엔티티 관리자에 추가하기 전에 제거된다.) 다음 줄은 Hibernate를위한 JPA 속성 설정의 예를 보여준다.