public User getUserById(Integer id){
//使用load方法,必须保证数据库中存在记录
User user = null;
try {
Session session = HibernateSessionFactory.getSession();
user = (User)session.load(User.class, id);
} catch (HibernateException e) {
e.printStackTrace();
}finally{
// HibernateSessionFactory.closeSession();
}
return user;
}
在上述代码中,如果我将finally中的语句=不注释掉,那么在调用getUserById方法的时候就无法正确获取到User的值,这是为什么呢?这是不是表示如果想应load的话,那么就不能关闭session啊
问一个关于Hibernate session 的 load 方法的问题
答案:2 悬赏:70 手机版
解决时间 2021-02-23 02:36
- 提问者网友:火车头
- 2021-02-22 17:06
最佳答案
- 五星知识达人网友:woshuo
- 2021-02-22 17:50
你要了解 load的原理就知道了,load其实 并没有真实读到数据库的数据,他在你使用的时候才真正去读取,而如果你还没使用的 时候把session关了 他想读取的时候还能读取吗?所以这样是不可以的
两种办法 一种延迟session生命周期
第二种是 关闭前使用它一下就可以了,比如 你system一下他的某一个属性 这个时候他就已经真实获取了 你再关闭应该就没问题了
两种办法 一种延迟session生命周期
第二种是 关闭前使用它一下就可以了,比如 你system一下他的某一个属性 这个时候他就已经真实获取了 你再关闭应该就没问题了
全部回答
- 1楼网友:鱼忧
- 2021-02-22 18:58
亲session又不知道你要加载的是什么对象啊,你当然要转换成正确的需要对象,这并不能算是强制转换,更准确的说是在告诉session你要什么样的对象
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯