社区
Web 开发
帖子详情
关于hibernate问题
效林少爷
2010-06-01 08:59:58
最近在学习hibernate,对于hibernate的状态周期,看了很多资料,觉得很简单,但是好像又没有掌握好
求对状态周期的总结的资料
...全文
124
4
打赏
收藏
关于hibernate问题
最近在学习hibernate,对于hibernate的状态周期,看了很多资料,觉得很简单,但是好像又没有掌握好 求对状态周期的总结的资料
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wo28lf
2010-06-01
打赏
举报
回复
学习一下
Ade子夜
2010-06-01
打赏
举报
回复
[Quote=引用 1 楼 bb12152205gg 的回复:]
我这有个自己的总结,希望能帮到你
1.状态周期
①瞬时状态对象(Transient Objects)
使用new操作符初始化的对象不是立刻就持久的.它们的状态时瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所应用),它们的状态将会丢失,并有垃圾回收机制回收
②持久化状态对象(Persist Objects)
持久实例是任何具有数据库标……
[/Quote]
大家一起学习!!!
扁鵲東南飛
2010-06-01
打赏
举报
回复
[Quote=引用 1 楼 bb12152205gg 的回复:]
我这有个自己的总结,希望能帮到你
1.状态周期
①瞬时状态对象(Transient Objects)
使用new操作符初始化的对象不是立刻就持久的.它们的状态时瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所应用),它们的状态将会丢失,并有垃圾回收机制回收
②持久化状态对象(Persist Objects)
持久实例是任何具有数据库标……
[/Quote]
够详细。不错,来学习了,顺便帮楼主顶下帖子。
bb12152205gg
2010-06-01
打赏
举报
回复
我这有个自己的总结,希望能帮到你
1.状态周期
①瞬时状态对象(Transient Objects)
使用new操作符初始化的对象不是立刻就持久的.它们的状态时瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所应用),它们的状态将会丢失,并有垃圾回收机制回收
②持久化状态对象(Persist Objects)
持久实例是任何具有数据库标识的实例.它由持久化管理器Session统一管理,持久实例是在事务中进行操作的--它们的状态在事务结束时同数据库进行同步.
③离线状态对象(Detached Objects)
Session关闭之后,持久化对象就变为离线对象.离线表示这个对象不能再与数据库保持同步,它们不再受Hibernate管理
Transient对象与Detached对象:
相同点:都不被session管理
不同点:Transient对象,数据库没有与之对应的记录;Detached对象,数据库有与之对应的记录
//测试方法(瞬时到持久化)
public void testSave1(){
Session session = null;
Transaction tx = null;
User user = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
//Transient(瞬时)状态
user = new User();
user.setName("123");
user.setPassword("123");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//persistent(持久化)状态
session.save(user);
/*
* 由于目前处于persistent状态
* 当对象的属性发生改变的时候
* hibernate会自动和数据保持同步
* 也就是说,数据库保存的是"456"
*/
user.setName("456");
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
}
在控制台可以看到打印的sql语句:
Hibernate: insert into t_user
(name, password, createTime, expireTime, id)
values (?, ?, ?, ?, ?)
Hibernate: update t_user set name=?,
password=?, createTime=?, expireTime=?
where id=?
先insert,后面因为属性改变,所以又update
---
★
public class SessionTest extends TestCase {
//测试方法(瞬时到持久化到离线)
public void testSave2(){
Session session = null;
Transaction tx = null;
User user = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
//Transient(瞬时)状态
user = new User();
user.setName("123");
user.setPassword("123");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//persistent(持久化)状态
session.save(user);
/*
* 由于目前处于persistent状态
* 当对象的属性发生改变的时候
* hibernate会自动和数据保持同步
* 也就是说,数据库保存的是"456"
*/
user.setName("456");
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
HibernateUtils.closeSession(session);
}
//detached(离线)状态
user.setName("789");
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
//回到persistent(持久化)状态
session.update(user);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
}
你可以再控制台看到sql语句:
Hibernate: insert into t_user (name, password, createTime, expireTime, id)
values (?, ?, ?, ?, ?)
Hibernate: update t_user set name=?, password=?, createTime=?, expireTime=? where id=?
Hibernate: update t_user set name=?, password=?, createTime=?, expireTime=? where id=?
先insert,后面因为属性改变,所以又update,再后来,从离线状态回到持久化状态,并且属性改变,再次update
----------
javax.persistence-2.0.0.jar
javax.persistence-2.0.0.jar 解决
Hibernate
JPA不兼容
问题
。
关于
Hibernate
里
hibernate
.properties not found的
问题
及数据库方言更新
问题
这两天一直在解决这个
问题
,也查阅了很多资料,实在是心酸的不行。现在终于调试出来了,这么过分一定要发博客! 首先先说明一下,我用的是
Hibernate
5.2和MySQL 5.7的版本! 划重点!!————————————...
也来说说关于
Hibernate
使用update更新数据时,不更新的
问题
好了,废话不多说,结合最近的使用,和大家一起探讨一个
hibernate
经常遇到的
问题
:
问题
描述:用SSH框架,开发项目时,进行修改操作时,比如修改密码、修改某个表的某个字段的信息等等,初学者经常会遇到的一个
问题
...
Hibernate
入门第一讲——
Hibernate
框架的快速入门
Hibernate
框架介绍什么是
Hibernate
我们可以从度娘上摘抄这样有关
Hibernate
的介绍:
Hibernate
是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全...
关于
hibernate
中取消懒加载
问题
玩过
hibernate
的人都知道 ,
hibernate
为了提高效率,采用了懒加载这个玩意,他好处很多,但是也存在着
问题
,比如2个类是1对多或者多对一的关系,我需要在view层显示其中一个类的关联类,那正常获取就爆炸了,会报错...
Web 开发
81,087
社区成员
341,733
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章