在默认情况下,persistence.xml是存放在classpath路径下的META-INF/文件夹下面的。但是这样的话,跟我们的习惯不一样,因为可以通过在spring的配置文件中,指明persistence.xml文件的位置来进行配置。代码如下:
<!-- 配置JPA实体管理器工厂 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="test" />
<property name="persistenceXmlLocation" value="classpath:persistence.xml" />
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory">
<ref bean="entityManagerFactory" />
</property>
</bean>
<!-- 配置AOP事务拦截-->
<aop:config>
<aop:pointcut id="ServiceMethods" expression="execution(public * net.kentop.cmmp.service.*.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="ServiceMethods" />
</aop:config>
<!-- 配置事务通知的属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
</tx:attributes>
</tx:advice>
以上的配置还配置了事务和AOP事务拦截。
这样的话,要使用到hibernate的dao层就要继承
org.springframework.orm.jpa.support.JpaDaoSupport类,这样才可以getJpaTemplate()方法获得entityManager实例,对数据库进行操作