上一主题下一主题
关键字
主题 : 事务配置
我还没有设置个性签名
级别: 终身会员

UID: 11051
精华: 0
发帖: 232
威望: 734 点
学点: 299 点
贡献: 1 点
好评: 0 点
学币: 0 个
注册时间: 2008-06-20
最后登录: 2015-03-11
楼主  发表于: 2009-07-24 14:19||

事务配置

        在学习SSH博客系统的时候,发现老师在没有配置spring事务管理的同时,可以正常实现数据的CRUD操作,但是我自己试验的时候,在dao中能看到发出sql语句,但是后来又回滚了,数据不会插入到DB中,请问在不配置事务的情况下,dao中的类继承HibernateDaoSupport的事务情况具体是什么?
    谢谢
我就是我历风行  我热爱Java技术 同样热爱北风网
级别: 北风资深评论员

UID: 2419
精华: 5
发帖: 385
威望: 4215 点
学点: 789 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2008-05-26
最后登录: 2012-11-01
沙发(1楼)  发表于: 2009-07-24 15:29||

你把你具体的代码发上来看一下,没配置事务在某些情况也是可以实现CURD的,我在课程中就是这样的,你仔细看一下,是不是某些地方配置不对。
我还没有设置个性签名
级别: 终身会员

UID: 11051
精华: 0
发帖: 232
威望: 734 点
学点: 299 点
贡献: 1 点
好评: 0 点
学币: 0 个
注册时间: 2008-06-20
最后登录: 2015-03-11
板凳(2楼)  发表于: 2009-07-24 16:58||

首先是applicationContext.xml文件的内容
复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
  5.  
  6.  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  7.   <property name="configLocation">
  8.    <value>classpath:hibernate.cfg.xml</value>
  9.   </property>
  10.  </bean> 
  11.  <bean id="userdao" class="com.dao.UserDao">
  12.   <property name="sessionFactory" ref="sessionFactory"></property>
  13.  </bean>
  14.  
  15. </beans>

然后是hibernate.cfg.xml的代码
复制代码
  1. <hibernate-configuration>
  2.  <!-- a SessionFactory instance listed as /jndi/name -->
  3.  <session-factory>
  4.   <!-- properties -->
  5.   <property name="dialect">
  6.    org.hibernate.dialect.MySQLDialect
  7.   </property>
  8.   <property name="show_sql">true</property>
  9.   <property name="connection.username">root</property>
  10.   <property name="connection.password">xinglu</property>
  11.   <property name="connection.driver_class">
  12.    com.mysql.jdbc.Driver
  13.   </property>
  14.   <property name="connection.url">jdbc:mysql:///mytest</property>
  15.   <property name="hbm2ddl.auto">update</property>
  16.   <!-- mapping files -->
  17.   <mapping resource="com/po/User.hbm.xml"/>
  18.  </session-factory>
  19. </hibernate-configuration>

测试的Po就是一个简单的User
复制代码
  1.  package com.po;
  2. public class User {
  3.  private int id;
  4.  private String name;
  5.  public int getId() {
  6.   return id;
  7.  }
  8.  public void setId(int id) {
  9.   this.id = id;
  10.  }
  11.  public String getName() {
  12.   return name;
  13.  }
  14.  public void setName(String name) {
  15.   this.name = name;
  16.  }
  17. }

DAO层没有使用接口
复制代码
  1.  package com.dao;
  2. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
  3. import com.po.User;
  4. public class UserDao extends HibernateDaoSupport {
  5.  public void s****e(User user){
  6.   this.getHibernateTemplate().s****e(user);
  7.  }
  8. }

最后是测****例:
复制代码
  1. package com.test;
  2. import junit.framework.TestCase;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. import com.dao.UserDao;
  6. import com.po.User;
  7. public class TransactionTest extends TestCase {
  8.  public void testTransaction() {
  9.   ApplicationContext wac = new ClassPathXmlApplicationContext(
  10.     "applicationContext.xml");
  11.   UserDao userdao = (UserDao) wac.getBean("userdao");
  12.   User user = new User();
  13.   user.setName("myname");
  14.   userdao.s****e(user);
  15.  }
  16. }

测试s****e操作时,发出sql语句,但是数据库中最终没有记录