2013-04-16 4 views
0

Hibernate 구현을 사용하여 JPA를 사용하기 위해 Spring을 설정 중입니다. 그러나 나는 그 과정을 완전하게 이해하지 못한다. 저는 다른 블로그 등을 따라 작업하도록했습니다. EJB 3.1을 사용했고 거기에 persistence.xml을 가지고있었습니다. 그러나 봄에 나는 LocalContainer ... Bean을 선언하고 그것에 몇 가지 속성을 제공했으며 persistence.xml을 가지고 있지 않다. 누군가 Spring에서 작동하는 방식과 선언 된 bean이 무엇인지 설명 할 수 있습니까?Spring 어플리케이션에서 JPA 설정하기

+0

통찰력을 원할 경우 봄 구성을 공유해야합니다. –

+0

@HimanshuBhardwaj Done – LuckyLuke

답변

0

JPA에는 Spring Configuration의 다른 종류가 있으며, persistence.xml이 필요한 것과 Spring 선언 (persistence.xml 없음)이 필요한 항목이 있습니다.

나는 시나리오의 경우-2를 차지하기 위하여려고하고있다 : 우리는이 persistence.xml 때문에 다음과 같은 이유입니다 원하는

주요 이유 :

  1. 데이터베이스 연결 세부 사항을.
  2. 엔티티를 검색 할 엔터티 또는 패키지로 취급되는 Java 클래스.
  3. hibernate.show_sql 또는 유사한 항목과 같은 기타 공급 업체별 설정.

이제 스프링이 모든 것을 콩 구성으로 언급 할 수있는 방법을 제공한다면 persistence.xml을 가질 필요가 없습니다.

bean 정의의 경우,이를 분해 할 수 있습니다.

<bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
    </property> 
    <property name="packagesToScan" value="com.company.domain" /> 
    <property name="jpaProperties"> 
     <props> 
      <prop key="hibernate.dialect"> 
       org.hibernate.dialect.PostgreSQL82Dialect 
      </prop> 
     </props> 
    </property> 
</bean> 

첫 번째 속성 인 dataSource에는 이미 데이터베이스 설정이 포함되어 있습니다.

두 번째 특성은, jpaVendorAdapter이

세 번째 속성을 봄에 고유 한 속성입니다, packagesToScan이 봄의 속성은 각 언급에 의해 "클래스"태그를 사용하여 우리 중 하나가이 persistence.xml에서 할이, 개체를 검색하는 것입니다 클래스 FQN.

넷째 재산, jpaProperties 이름 중 하나

예를 봄이나의 persistence.xml에있을 수 있듯이

봄 3.1 대안을 제공 : 당신은 이미 스프링 빈의 모든 구성을 가지고 있기 때문에

<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL82Dialect" /> 

, 거기에 그냥 각주를 추가 할 persistence.xml을

을 할 필요가 없습니다 LocalContainerEntityManagerFactoryBean @ packages 클래스를 검색 할 기본 패키지를 지정하는 'packagesToScan'속성을 허용합니다.

희망 답변입니다.