hibernate生成的dao怎么添加方法

 我来答
百度网友5e15b90
2017-10-17 · TA获得超过1031个赞
知道小有建树答主
回答量:806
采纳率:91%
帮助的人:830万
展开全部
使用MyEclipse中用hibernate反向工程生成的DAO会发生对象无法存储到数据库的现象,原因是没有运用事务。DAO里注释提示如下:

[java] view plain copy print?
/**
* A data access object (DAO) providing persistence and search support for User
* entities. Transaction control of the save(), update() and delete() operations
* can directly support Spring container-managed transactions or they can be
* augmented to handle user-managed Spring transactions. Each of these methods
* provides additional information for how to configure it for the desired type
* of transaction control.
*
* @see org.hibernate.entity.User
* @author MyEclipse Persistence Tools
*/

解决方法一、使用Spring的事务管理
方法二、修改DAO,添加事务处理
当然可以在调用dao对象的代码前后加事务控制,但这样破坏了dao对数据库操作的封装,让业务层中掺杂了持久层代码。所以进行以下修改:

[java] view plain copy print?
import org.hibernate.Session;
import org.hibernate.Transaction;
public void save(Resource transientInstance) {
log.debug("saving Resource instance");
try {
Session session = getSession();
Transaction tr = session.beginTransaction(); //开始事务
session.save(transientInstance);
tr.commit(); //提交事务
session.flush(); //清空缓存
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
public void delete(Resource persistentInstance) {
log.debug("deleting Resource instance");
try {
Session session = getSession();
Transaction tr = session.beginTransaction();
session.delete(persistentInstance);
tr.commit();
session.flush();
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式