您的位置:首页 > 编程语言 > Java开发

使用MyEclipse中用Hibernate反向工程生成的DAO会发生对象无法存储到数据库的现象,原因是没有运用事务。

2011-06-06 20:49 761 查看

Hibernate自动生成的DAO的修改方法

日期:2009-07-12
| 分类:J2EE

版权声明
:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://geekmind.blogbus.com/logs/42231596.html

使用MyEclipse中用Hibernate反向工程生成的DAO会发生对象无法存储到数据库的现象,原因是没有运用事务。当然可以在调用dao对象的代码前后加事务控制,但这样破坏了dao对数据库操作的封装,让业务层中掺杂了持久层代码。所以进行以下修改:

原来的代码为:

public void save(Hobby transientInstance) {
log.debug("saving Hobby instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}

修改后:

public void save(User transientInstance) {
log.debug("saving User instance");
try {
Session session = getSession();
Transaction tr = session.beginTransaction();
session.save(transientInstance);
tr.commit();
session.flush();
session.close();
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}

最好如下使用:

// Session session = HibernateSessionFactory.getSession();

// Transaction tx = session.beginTransaction();

// Users u = new Users();

// u.setId(4);

// u.setAddress("sdkd");

// u.setEmail("54@qq.com");

// u.setPhone("15165254397");

// try {

// session.save(u);

// tx.commit();

// } catch (Exception e) {

// tx.rollback();

// e.printStackTrace();

// }finally{

// session.close();

// }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐