Spring實戰 (五) 使用JPA

基於JPA的應用程序使用EntityManagerFactory的實現類來獲取EntityManager實例.JPA定義了2種類型的實體管理器 spring

  • 應用程序管理類型
  • 容器管理類型
不管使用哪一種EntityManagerFactory都無所謂,由於最終都會由Spring來負責管理EntityManager.這2種實體管理器工廠分別由對應的Spring工廠Bean建立
  • LocalEntityManagerFactoryBean生成應用程序管理類型的EntityManagerFactory
  • LocalContainerEntityManagerFactoryBean生成容器管理類型的EntityManagerFactory
咱們一般會選擇後者-容器管理類型的LocalContainerEntityManagerFactoryBean,這樣咱們就能夠將數據源信息配置在Spring應用上下文中,而不在須要一個persistence.xml配置文件了.


以下的<bean>聲明展示了在Spring中如何使用LocalContainerEntityManagerFactoryBean來配置容器管理類型的JPA 數據庫


<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource">
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter">
</bean>


jpaVendorAdapter屬性用於指明所使用的是哪個廠商的JPA實現.Spring提供了多個JPA廠商適配器 spa


  • EclipseLinkJpaVendorAdapter
  • HibernateJpaVendorAdapter
  • OpenJpaVendorAdapter
  • TopLinkJpaVendorAdapter

咱們使用Hibernate做爲JPA實現,因此將其配置爲一個HibernateJpaVendorAdapter code

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="database" value="數據庫">
    <property name="showSql" value="true">
    <property name="generateDdl" value="true">
    <property name="databasePlatform" value="數據庫Dialect">
</bean>
 從JNDI獲取實體管理器工廠

使用Spring的jee命名空間下的<jee:jndi-lookup>元素來獲取對EntityManagerFactory的引用 orm

<jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence/XXXXX"> xml

無論如何獲得EntityManagerFactory,一旦有了這個對象接下來就能夠編寫DAO了 對象

之後會介紹如何使用Spring Data Jpa來簡化DAO層的開發  ip

相關文章
相關標籤/搜索