`
xhy0422
  • 浏览: 279420 次
社区版块
存档分类
最新评论

spring+hibernate 的hibernateTemplate 的save不能提交到数据库的问题

阅读更多
xml 代码
  1. 我的配置文件和Dao如下,问题是save方法只能提交到缓存,并没有提交到数据库,找了很多资料都不能解决,只能放弃这种方法,挺不甘心的,网上很多人说是这样做,可是还是不行,希望能找到症结: [code]       
  2.       
  3. <bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" singleton="true">        
  4. <property name="hibernateProperties">        
  5. <props>        
  6. <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialectprop>        
  7. <prop key="hibernate.show_sql">trueprop>        
  8. <prop key="hibernate.cglib.use_reflection_optimizer">trueprop>        
  9. <prop key="hibernate.proxool.xml">Proxool.xmlprop>        
  10. <prop key="hibernate.proxool.pool_alias">DBPoolprop>        
  11. props>        
  12. property>        
  13. <property name="mappingResources">        
  14. <list>        
  15. <value>hibernatePojo/Worker.hbm.xmlvalue>        
  16. list>        
  17. property>        
  18. bean>      
  19.       
  20. <bean id="TransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">        
  21. <property name="sessionFactory">        
  22. <ref bean="SessionFactory"/>        
  23. property>        
  24. bean>      
  25.       
  26. <bean id="WorkerDAO" class="hibernateDaoImpl.WorkerDAOImpl">        
  27. <property name="sessionFactory">        
  28. <ref bean="SessionFactory"/>        
  29. property>        
  30. bean>      
  31.       
  32. <bean id="WorkerDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">        
  33. <property name="transactionManager">        
  34. <ref bean="TransactionManager"/>        
  35. property>        
  36. <property name="proxyInterfaces">        
  37. <list>        
  38. <value>hibernateDaoInterface.WorkerDAOvalue>        
  39. list>        
  40. property>        
  41. <property name="target">        
  42. <ref bean="WorkerDAO"/>        
  43. property>        
  44. <property name="transactionAttributes">        
  45. <props>        
  46. <prop key="save*">PROPAGATION_REQUIREDprop>        
  47. props>        
  48. property>        
  49. bean>      
  50.       
  51. 业务层        
  52. <bean id="WorkerLoginCheck" class="serviceImpl.WorkerLoginCheckImpl">        
  53. <property name="workerDAO">        
  54. <ref bean="WorkerDAOProxy"/>        
  55. property>        
  56. bean>      
 
java 代码

DAO代码:   

  1. public class DAOImpl extends HibernateDaoSupport implements DAO {    
  2. public boolean insertOne(Object entity) {    
  3. try {    
  4. getHibernateTemplate().save(entity);    
  5. return true;    
  6. catch (DataAccessException e) {    
  7. e.printStackTrace();    
  8. return false;    
  9. }    
  10.   
  11. }    
  12.   

 

xml 代码
  1. xml 代码   
  2. 问题解决,问题在于事务的配置不对,事务应该配置在业务层而不是持久层,配在持久层的方法上就没有意义了        
  3. 持久层配置文件:        
  4. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">        
  5. <property name="sessionFactory">        
  6. <ref bean="SessionFactory" />        
  7. property>        
  8. bean>        
  9. <bean id="baseTransactionProxy"        
  10. class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"        
  11. abstract="true">        
  12. <property name="transactionManager">        
  13. <ref bean="transactionManager" />        
  14. property>        
  15. <property name="transactionAttributes">        
  16. <props>        
  17. <prop key="cha*">PROPAGATION_REQUIREDprop>        
  18. <prop key="update*">PROPAGATION_REQUIREDprop>        
  19. <prop key="del*">PROPAGATION_REQUIREDprop>        
  20. <prop key="get*">PROPAGATION_REQUIRED,readOnlyprop>        
  21. props>        
  22. property>        
  23. bean>        
  24. <bean id="WorkerDAO" class="hibernateDaoImpl.WorkerDAOImpl">        
  25. <property name="sessionFactory">        
  26. <ref bean="SessionFactory" />        
  27. property>        
  28. bean>        
  29. 业务层配置:        
  30. <bean id="WorkerLoginCheck" parent="baseTransactionProxy">        
  31. <property name="target">        
  32. <ref local="WorkerLoginCheckTarget" />        
  33. property>        
  34. bean>        
  35. <bean id="WorkerLoginCheckTarget" class="serviceImpl.WorkerLoginCheckImpl">        
  36. <property name="workerDAO">        
  37. <ref bean="WorkerDAO" />        
  38. property>        
  39. bean>        
  40. 实现方法:        
  41. serviceImpl.WorkerLoginCheckImpl中有chaWorker方法,调用WorkerDAO的insertOne方法        
  42. 很久了,一直没时间尝试,拖到了今天,希望能对大家有所帮助       

 

 

分享到:
评论
2 楼 virtualhaha 2012-06-19  
之前做ssh集成 的时候我也遇到过类似的问题,就是添加后显示添加成功,返回查找也能找到,就是没有提交到数据库,后台也看到了插入数据的sql语句,我想应该是insert了但没有commit.后来,添加了事务之后就解决了、、、
1 楼 dongfangx 2008-08-22  
我遇到这个问题

相关推荐

Global site tag (gtag.js) - Google Analytics