反向工程生成的DAO中,保存数据的方法save的格式一般如下:
public void save(User transientInstance) {
log.debug("saving User instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
//此处没有提交事务
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
显然,由于调用save之后并没有调用Transaction的commit方法,事务没有提交,数据无法保存。个人也觉得用Spring的代理来解决这个问题比较好,网上相关资源较多,如要使用Spring代理的方法来解决这个问题可以参考这里:http://www.blogjava.net/beansoft/archive/2007/08/07/134845.html
但是,Spring用起来不是很顺,如果我不想用Spring来代理Hibernate的事务处理,该怎么办?
那就自己来进行事务管理吧,通用的方法如下:
public static void main(String[] args) {
UserDAO udao=new UserDAO();//生成好的DAO
Transaction tran=udao.getSession().beginTransaction();//关键点,获取tran
User user=new User();//DAO对应的POJO类
user.setSusername("test");
user.setSuserpsw("test");
udao.save(user);
tran.commit();//事务提交
}
更详细的描述请参考:《MyEclipse 6 Java 开发中文教程_免费电子版.pdf》作者:刘长炯
(貌似现在市面上专门讲MyEclipse的书也比较少,很难找到,给大家分享了,已经上传到我的资源里面)
现在的问题是,自己进行事务管理的方法在每次保存数据的时候都要重复相同的代码,很不爽,不过先这么着吧,毕竟Spring暂时还不想真正用在项目上