浏览 9838 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-27
<bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" singleton="true"> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.cglib.use_reflection_optimizer">true</prop> <prop key="hibernate.proxool.xml">Proxool.xml</prop> <prop key="hibernate.proxool.pool_alias">DBPool</prop> </props> </property> <property name="mappingResources"> <list> <value>hibernatePojo/Worker.hbm.xml</value> </list> </property> </bean> <bean id="TransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="SessionFactory"/> </property> </bean> <bean id="WorkerDAO" class="hibernateDaoImpl.WorkerDAOImpl"> <property name="sessionFactory"> <ref bean="SessionFactory"/> </property> </bean> <bean id="WorkerDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="TransactionManager"/> </property> <property name="proxyInterfaces"> <list> <value>hibernateDaoInterface.WorkerDAO</value> </list> </property> <property name="target"> <ref bean="WorkerDAO"/> </property> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> 业务层 <bean id="WorkerLoginCheck" class="serviceImpl.WorkerLoginCheckImpl"> <property name="workerDAO"> <ref bean="WorkerDAOProxy"/> </property> </bean> DAO代码: public class DAOImpl extends HibernateDaoSupport implements DAO { public boolean insertOne(Object entity) { try { getHibernateTemplate().save(entity); return true; } catch (DataAccessException e) { e.printStackTrace(); return false; } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-04-28
你好,我昨天出差了,回来后看到你的信息,你试一下,save后做一下flash或cmmit。
|
|
返回顶楼 | |
发表时间:2007-04-28
不知道,你是怎么调用你的dao的。一般情况下,在事务环境中,才会提交。要不然就不要使用spring的daoSupport,直接调用申明自己的事务环境。
<property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED</prop> </props> </property> 中是不是应该增加<prop key="insert*">PROPAGATION_REQUIRED</prop> |
|
返回顶楼 | |
发表时间:2007-04-29
引用 <prop key="save*">PROPAGATION_REQUIRED</prop> 问题就在这里没有匹配到DAO的方法名 |
|
返回顶楼 | |
发表时间:2007-05-08
我有试过save后做一下flash或commit,还是不灵
我最初就是用<prop key="insert*">PROPAGATION_REQUIRED</prop> 的但是还是不行,所以才改成 <prop key="save*">PROPAGATION_REQUIRED</prop> 这个方法名应该是自己的方法名insert..还是daosupport的方法名save..呢? |
|
返回顶楼 | |
发表时间:2007-05-08
xhy0422 写道 我有试过save后做一下flash或commit,还是不灵
虽然看不到你的serviceImpl.WorkerLoginCheckImpl代码但是猜想:
我最初就是用<prop key="insert*">PROPAGATION_REQUIRED</prop> 的但是还是不行,所以才改成 <prop key="save*">PROPAGATION_REQUIRED</prop> 这个方法名应该是自己的方法名insert..还是daosupport的方法名save..呢? interface WorkerLoginCheck{ insertOne(); } 改名为 interface WorkerLoginCheck{ saveOne(); } |
|
返回顶楼 | |
发表时间:2007-05-18
我也遇到同样的问题了
请问这个问题解决了没啊?先谢谢了 |
|
返回顶楼 | |
发表时间:2007-05-28
<prop key="hibernate.proxool.xml">Proxool.xml</prop>
<prop key="hibernate.proxool.pool_alias">DBPool</prop> 直接用JDBC试试 |
|
返回顶楼 | |
发表时间:2007-06-09
问题解决,问题在于事务的配置不对,事务应该配置在业务层而不是持久层,配在持久层的方法上就没有意义了
持久层配置文件: <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="SessionFactory" /> </property> </bean> <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="cha*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="del*">PROPAGATION_REQUIRED</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <bean id="WorkerDAO" class="hibernateDaoImpl.WorkerDAOImpl"> <property name="sessionFactory"> <ref bean="SessionFactory" /> </property> </bean> 业务层配置: <bean id="WorkerLoginCheck" parent="baseTransactionProxy"> <property name="target"> <ref local="WorkerLoginCheckTarget" /> </property> </bean> <bean id="WorkerLoginCheckTarget" class="serviceImpl.WorkerLoginCheckImpl"> <property name="workerDAO"> <ref bean="WorkerDAO" /> </property> </bean> 实现方法: serviceImpl.WorkerLoginCheckImpl中有chaWorker方法,调用WorkerDAO的insertOne方法 很久了,一直没时间尝试,拖到了今天,希望能对大家有所帮助 |
|
返回顶楼 | |