hibernate事务mysql_hibernate事务提交的问题,为什么每次提交事务都是上一次的操作...

素颜马尾好姑娘i 2022-11-03 10:40 17阅读 0赞

学习ssh遇到一个问题,向数据库插入一笔记录,去数据库查看,没有反应,然而当本人再次向数据库插入一笔记录时,数据库显示更新了上一次插入的记录。假如这时候再次向数据库插入一笔记录,数据库显示的是第二次更新的数据,也就是说,本人每插入一笔记录,数据库一直显示上一次的操作有效。假如关闭程序,最后一次的插入记录操作会被丢失。

本人的数据库是mysql,是通过Hibernate Reserve Engineering…自动生成的代码,文件UserDAO.java的代码为:

public class UserDAO extends HibernateDaoSupport implements IUserDAO {

private static final Log log = LogFactory.getLog(UserDAO.class);

// property constants

public static final String USERNAME = “username”;

public static final String PASSWORD = “password”;

protected void initDao() {

// do nothing

}

/* (non-Javadoc)

* @see com.ssh.dao.impl.IUserDAO#save(com.ssh.user.User)

*/

@Override

public void save(User transientInstance) {

log.debug(“saving User instance”);

Session session = this.getSession();

Transaction tx = session.beginTransaction();

try {

getHibernateTemplate().save(transientInstance);

tx.commit();

log.debug(“save successful”);

} catch (RuntimeException re) {

log.error(“save failed”, re);

throw re;

}

}

}

其中Session session = this.getSession();Transaction tx = session.beginTransaction();这些代码是本人本人添加了,原因是自动生成的代码不会产生事务处理。

hibernate的配置文件hbernate.cfg.xml如下:

hibernate-configuration PUBLIC

“-//Hibernate/Hibernate Configuration DTD 3.0//EN”

“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>

org.hibernate.dialect.MySQLDialect

jdbc:mysql://localhost:3306/logindemo

root

cyj

com.mysql.jdbc.Driver

true –>

true

MySqlConn

spring配置文件applicationContext.xml内容如下:

xmlns=”http://www.springframework.org/schema/beans”

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xmlns:p=”http://www.springframework.org/schema/p”

xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd”>

class=”org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean”>

value=”classpath:hibernate.cfg.xml”>

本人打开调试,每当执行完tx.commit();这句代码,立刻去数据库查看,显示数据库更新了上一次的操作。假如是程序第一次执行插入操作,执行tx.commit();数据库没有任何反应。

解决方案

60

可以尝试在spring里加上事务处理。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明hibernate事务提交的问题,为什么每次提交事务都是上一次的操作!

发表评论

表情:
评论列表 (有 0 条评论,17人围观)

还没有评论,来说两句吧...

相关阅读

    相关 事务失效问题排查

    在讲事务失效问题之前,先介绍一下Spring中的事务同步器,在平时写需求时,常常有这样一类需求 同步数据到外部系统 系统内部状态更新联动其它模块进行数据更新 这些步骤非