2013-12-23 2 views
1

필자는 사용할 프로 바이더를 정의한 프로젝트에서 persistence.xml을 사용했습니다 (대부분의 경우 최대 절전 모드).Spring 애플리케이션의 persistence.xml

그러나 Spring 프레임 워크를 사용하는 것이 필수적인 새로운 프로젝트를 시작하고 있습니다. Spring에서 Hibernate의 통합을 설명하는 블로그를 보았고 spring beans descriptor에서 세션 팩토리를 선언해야한다는 것을 알았습니다. org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

필자가 보았던 모든 예제는 지속성 사용에 대해서는 언급하지 않았습니다. xml, 영속 컨텍스트, 엔티티 관리자 ...

이 점을 잘 모르겠다. 나는 항상 Hibernate가 application-context.xml에 선언 된 팩토리가 배경에서 무언가를하지 않는 한 JPA의 공급자 일 뿐이라고 생각했다. . 그것이 사실 인 경우에, 나는 ... 그것을 작동하는 방법을 이해하기 위해 사전에

덕분에 ...

답변

3

AnnotationSessionFactoryBean 공장 콩 최대 절전 모드 세션 공장을 만들 스프링에 의해 구현과 Spring의 애플리케이션 컨텍스트에 공유를하고 싶습니다. 직접적인 Hibernate를 사용할 계획이라면 (persistent.xml/cont.xml/entityManager마다 필요 없다) AnnotationSession FactoryBean에 속성을 제공 할 수 있습니다. Any DAO에 주입 할 수 있습니다.
JPA를 통해 배선하려는 경우 어떻게 될 것입니까? 그런 다음 (지속성 및 지속적인 컨텍스트 및 엔티티 관리자)가 필요합니다. 당신은 세 단계를 필요 그렇게하기 위해서는
1. 선언/당신이


내부 JPA 콩 선언이 데이터베이스에 대한 세부 정보를 제공

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
누가이기 EntityManager의 인스턴스를 생성하는 봄의 JPA 어댑터를 구성 (최대 절전 모드/상단 링크는/....) 귀하의 경우

<property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="true" /> 
      <property name="generateDdl" value="false" /> 
      <property name="databasePlatform" value="org.hibernate.dialect.Oracle9Dialect"/> 
     </bean> 
    </property> 

은 다음 영속 엔티티 DETA에 대한 정보를 제공 최대 절전 모드와 같은 ORM 제공 persistent.xml 또는 어떤 식 으로든 ILS

<property name="persistenceXmlLocation" value="classpath:persistence.xml" /> 


당신은 어떤 특정 JPA 속성이있는 경우 다음

<property name="jpaProperties"> 
     <props> 
    <!--  <prop key="hibernate.cache.provider_class"> 
       org.hibernate.cache.EhCacheProvider 
     </prop> 
     --> 
     <prop key="hibernate.format_sql">false</prop> 
     <prop key="hibernate.use_sql_comments">false</prop> 
     </props> 
    </property> 


결론은, 봄이 점에서 (직접 최대 절전 모드로 전환하는 어댑터를 provies 예를 들어 persistent.xml과 같은 Jpa 파일이 필요 없지만 hbm 파일과 같은 관련 파일을 hibernate해야합니다.) 또는 JPA에 대한 어댑터가 필요합니다 (이 경우 JPA 공급 업체 및 스트럿 스프링 JPA 공급 업체에 연결하는 방법).


희망 사항이 명확 해집니다.

+0

답변을 주셔서 감사합니다 :-), 직접 최대 절전 모드를 사용하면 무엇을 의미합니까? 제 생각에는 우선 JPA를 사용하고 그 후에 공급자를 선택하는 것이 필수적입니다. 엔티티의 주석을 매핑하는 것은 Hibernate 주석이 아닙니다. 미안하지만 여전히 조금 혼란 스럽네요 ... – javaxiss

+0

우리는 hbm 또는 hibernate 주석을 사용하여 orm을 구현할 수 있습니다. jpa.jpa가없는 sessionfactory는 orm에 대한 공통 사양이며 구현이 아닌 인터페이스를 제공합니다. 최대 절전 모드를 사용하여 구현하는 경우 쉽게 toplink, ibatis 및 do ..와 같은 다른 orm 도구로 쉽게 전환 할 수 없습니다.하지만 jpa와 jpa 어노테이션을 사용하여 구현하면 앱이 열렬하게 결합됩니다. 따라서 코드를 변경하지 않고도 모든 orm을 쉽게 전환 할 수 없습니다. 봄에는 구성 구현을 위해 변경해야 할 필요가 있습니다. – Mani

+0

netshell에서는 인터페이스를 사용하는 것과 비슷한 usibg jpa를 사용하고 최대 절전 모드는 유사 클래스와 유사합니다. . – Mani