a)您正在定义Hibernate
SessionFactory和JPA
EntitymanagerFactory。会是什么?使用Hibernate作为提供程序的Hibernate的Session
API或JPA的Entitymanager API,但不能两者都使用。
b)您已经定义了一个
HibernateTransactionManager,但是由于您
EntityManager在代码中使用,因此需要一个
JpaTransactionManager:
<bean id="myTxManager" > <property name="entityManagerFactory" ref="myEmf"/></bean
这是applicationContext.xml的注释版本:
<?xml version="1.0" encoding="UTF-8"?><beans (...)> <context:component-scan base-package="pl.m4ks.comics"/> <context:annotation-config /> <bean id="dataSource" > <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:8889/comics" /> <property name="username" value="root"/> <property name="password" value="root" /> </bean> <!-- use either this: --> <bean id="entityManagerFactory" > <property name="persistenceUnitName" value="main" /> <property name="dataSource" ref="dataSource" /> </bean> <!-- or this --> <bean id="sessionFactory" > <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="packagesToScan"> <value>pl.m4ks.comics</value> </property> </bean> <!-- (but not both) --> <!-- this is correct for AnnotationSessionFactoryBean, but not if you use LocalContainerEntityManagerFactoryBean --> <bean id="txManager" > <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!-- not necessary, <context:annotation-config /> automatically includes this --> <bean /> <tx:annotation-driven transaction-manager="txManager" proxy-target-/></beans>
还有一个设计说明: DAO不应是事务性的。您应该使用管理事务的服务层。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)