`
fulerbakesi
  • 浏览: 561715 次
文章分类
社区版块
存档分类
最新评论

整合Spring和JPA

 
阅读更多
整合Spring和JPA第二种方式
获取EntityManagerFactory的方法是使用springframe的LocalContainerEntityManagerFactoryBean

将前面获取EntityManagerFactory的class引用改一下:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
</bean>

我们只需要配置persistenceXmlLocation这个属性,指定到classpath里面的META-INF/persistence.xml。

这种方式是配置JPA的强大的方法。因为它允许在应用程序中灵活进行本地配置。它支持连接现有JDBC数据源,支持本地事务(RESOURCE_LOCAL)和全局事务(JTA)。

另外,还可以与dataSource一起使用,我们的persistence.xml里面不用写连接的属性了,直接就写名字和对应的实体就可以了,例如:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="MyPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>

<class>myentiry.UserInfo</class>

</persistence-unit>

</persistence>

spring的applicationContext配置文件:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url" value="jdbc:sqlserver://192.168.2.44:1433;databaseName=test" />
<property name="username" value="sa" />
<property name="password" value="sa" />
<property name="initialSize" value="5" />
<property name="minIdle" value="5" />
<property name="maxIdle" value="30" />
<property name="maxActive" value="100" />
<property name="maxWait" value="1000" />
</bean>

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

<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
<property name="persistenceUnitName" value="MyPU" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false" />
<property name="generateDdl" value="false" />
</bean>
</property>
</bean>

第三者方式是用jee:jndi-lookup从JNDI中获取EntityManagerFactory

<bean>

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

</bean>

在业务逻辑层里面我们得使用@Transactional注释标识,不然方法不会提交事务。

有关spring事务传播和事务隔离请看:

hi.baidu.com/coolcat%5Fpolice/blog/item/59ebc12324be8d4b935807d4.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics