付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Copyright2008ByNeusoftGroup.AllrightsreservedHibernate编程基础
——Hibernate编程东软IT人才实训中心第六章:Hibernate编程学时:3学时教学方法:讲授+练习目标:通过对Hibernate编程中一些常用机制的介绍和讨论,增强对Hibernate理解的,能够将相关机制应用到实际中完成应用程序内容提要持久化类持久化对象Session分类简单的性能问题持久化类编写要求无参构造器提供持久化标识属性(可选)非final(可选)Getter、setter方法(可选)基本数据类型VS包装类包装类的null值能够与数据库的null对应Integervsint重写equals
&
hashCode方法希望保存持久化对象的Set有明确的语义重写equals、hashCode方法重写equals
&
hashCode方法建议使用业务键,而不是使用生成的ID内容提要持久化类持久化对象Session分类简单的性能问题Hibernate中对象的状态Hibernate认为实体对象处于以下几种状态之一:持久化(Persistent)状态:对象处于Session缓存中对象与数据库中的数据一一对应,Hibernate负责维护对应关系非持久化状态:未处于Session缓存中Transient(临时)Detached(脱管)对象的区分Hibernate使用持久化标识符区分持久化对象对应一个标识符只存在一个持久化对象Hibernate对象的状态图主要的持久化方法Session.save方法:试图将一个给定的对象从Transient(临时)变成持久化状态,即向数据库中插入数据Session.get方法:试图根据持久化标识符检索一个持久化对象,即检索数据库数据Session.delete方法:试图删除一个持久化对象,即删除数据库中的数据Session.update方法:试图将一个Detached(脱管)对象变为持久化对象,使用此对象的数据替代数据库中的数据,即会触发数据库的update操作。如果Session缓存中已存在一个拥有相同标识符的持久化对象,则抛出异常Session.saveOrUpdate方法:由Hibernate决定:执行save或update操作更多的持久化方法Session.get方法VSSession.load方法如果没有匹配的数据库记录,load()方法抛出异常如果没有对应的记录,会返回nullSession.save方法VSSession.persist方法save方法保证持久化标识符的获得persist方法不保证当它在一个事务外部被调用的时候并不触发一个sql的insertSession.saveOrUpdate方法VSSession.merge方法merge方法将一个非持久化对象的数据拷贝给一个持久化对象其它持久化方法Session.evict(Object)将指定的持久化对象从Session缓存中移出(Detached),并撤销持久化对象的修改Session.clear()清空Session缓冲区,撤销所有的save、update、delete操作Session.flush()将持久化区中的(对象)数据同步到数据库内容提要持久化类持久化对象Session分类简单的性能问题“上下文相关”的SessionSessionFactory.openSession()程序员负责打开和关闭Session上下文相关的SessionSessionFactory.getCurrentSession()每个数据库事务对应一个Session使用基于线程的,对应数据库事务的SessionHibernate配置<propertyname="hibernate.current_session_context_class"> org.hibernate.context.ThreadLocalSessionContext</property>获得SessionSessionFactory.getCurrentSession()每个数据库事务对应一个SessionSession在开启事务后有效提交或会滚事务会自动关闭SessionCurrentSession代码示例CM2O2_ClasstClass=newCM2O2_Class();tClass.setId(classId);tClass.setName("merge1byCurrentSession");Sessionsession=HibernateUtils.getSessionFactory().getCurrentSession();Transactiontrans=session.beginTransaction();try{CM2O2_ClasspClass=(CM2O2_Class)session.merge(tClass);mit();}catch(Exceptione){trans.rollback();e.printStackTrace();}StatelessSessionSessionFactory.openStatelessSession()StatelessSession不实现第一级缓存,和低层JDBC相当接近StatelessSession接口定义的insert(),update()和delete()操作是直接的数据库行级别操作,其结果是立刻执行一条INSERT,UPDATE或DELETE语句。它们的语义和Session接口定义的save(),saveOrUpdate()和delete()操作有很大的不同Session的分类SessionFactory.openSession()SessionFactory.getCurrentSession()SessionFactory.openStatelessSession()内容提要持久化类持久化对象Session分类性能问题初步关键的性能问题数据库的常见问题数据库设计SQL的效率尽可能将数据的处理交给数据库完成事务控制Hibernate性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级统计师资格考试(高级统计实务与案例分析)试题库及答案(江苏省扬州市2026年)
- 初级统计师资格考试(统计专业知识和实务)试题库及答案(上海市2026年)
- 2026年验船师考试(C级船舶检验专业实务)强化训练试题及答案一
- 2026年上半年甘肃嘉峪关全国英语等级考试(PETS)一级B全真模拟试题及答案解析
- 2026年全国成人高等学校招生考试(数学(文)-高起点)模拟试题及答案
- 煤矿开采单位驾驶员定期维护安全操作规程
- 有机奶粉全球市场总体规模
- 公共营养师之四级营养师高分题库附答案
- 2026年高级统计师资格考试(高级统计实务与案例分析)试题库及答案(浙江温州)
- 电梯使用单位焊工运行操作安全操作规程
- 土地安置协议书
- 幕墙工程人力资源计划模板
- 《化工企业可燃液体常压储罐区安全管理规范》解读课件
- 车间异物控制管理制度
- 北京银行贷款合同范本
- 学堂在线 运动与健康 章节测试答案
- 2025 年成都市五年级语文秋季开学摸底考 - 提高卷及答案(苏教版)
- GB/T 755-2025旋转电机定额与性能
- 2025-2026学年人教版数学七年级上册暑期计算题自学练习(含解析)
- 企业廉洁从业工作汇报
- 本体设计与推理-洞察及研究
评论
0/150
提交评论