- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操纵持久化对象(二)
操纵持久化对象
回顾
手工配置Hibernate框架三个准备七个步骤
准备一、导入Hibernate库
准备二、添加配置文件hibernate.cfg.xml
准备三、添加映射文件UserInfo.hbm.xml
步骤一、创建Configuration
步骤二、创建SessionFactory
步骤三、打开Session
步骤四、开始一个事务
步骤五、持久化操作
步骤六、提交事务
步骤七、关闭session
本章目标
持久化对象的状态
持久化对象的生命周期
操纵对象,完成CRUD操作
持久化对象的状态
瞬时状态(Transient Objects):使用new操作符初始化的对象不是立刻就持久的。它们的状态是瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所引用),它们的状态将会丢失,并由垃圾回收机制回收。
持久化对象(Persist Objects):持久化实例是任何具有数据库标识的实例。它有持久化管理器Session统一管理,持久化实例是在事务中进行操作的—它们的状态在事务结束时同数据库进行同步。当事务提交时,通过执行SQL的INSERT、UPDATE和DELETE语句把内存中的状态同步到数据库中
离线对象(Detached Objects):Session关闭之后,持久化对象就变为离线对象。离线表示这个对象能再与数据库保持同步,它们不再受Hibernate管理
持久化对象的生命周期(lifecycle)
向数据库添加一条记录
Session s=sf.openSession();
Transaction tx=s.beginTransaction();
s.save(user);
mit();
s.close();
操纵对象,完成CRUD操作
根据主键,从数据库中取得一条记录
Session s=sf.openSession();
Userinfo us=(Userinfo)s.load(Userinfo.class, id);
操纵对象,完成CRUD操作
根据主键修改一条记录
Session s=sf.openSession();
Userinfo us=(Userinfo)s.get(Userinfo.class, id);
us.setUserques(你的偶像是谁?);
us.setUserans(比尔.盖茨);
Transaction tx=s.beginTransaction();
s.update(us);
mit();
操纵对象,完成CRUD操作
根据主键删除一条记录
Session s=sf.openSession();
Userinfo user=(Userinfo)s.get(Userinfo.class, id);
Transaction tx=s.beginTransaction();
s.delete(user);
mit();
s.close();
操纵对象,完成CRUD操作
进行查询可以使用Query接口和Criteria接口.使用Query接口需要编写HQL语句;使用Criteria接口需要和其他一些类进行配合使用比如Expression, Restrictions
操纵对象,完成CRUD操作
Query query=session.createQuery(from Users);
query.setFirstResult(0);
query.setMaxResults(3);
List list=query.list();
Iterator it=list.iterator();
while(it.hasNext()){
System.out.println(((Users)it.next()).getName());
}
总结
掌握Hibernate中对象的状态
transient状态
在数据库中没有与之匹配的数据
没有纳入session的管理
persistent状态
persistent状态的对象在数据库中有与之匹配的数据
纳入了session的管理
在清理缓存(脏数据检查)的时候,会和数据库同步
detached状态
在数据库中有与之匹配的数据
没有纳入session的管理
通过Hibernate对数据进行CRUD操作
知识点补充
Hibernate在应用中的位置
基于B/S的典型三层架构
开发如何分层?
业务逻辑层和持久化层绝不要依赖于展现层。
持久层对于业务层是透明的,持久层和业务层的变化是彼此独立的。
Hibernate核心接口
核心接口一Configuration
Configuration 类负责管理Hibernate 的配置信息。它包
原创力文档


文档评论(0)