版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Hibernate配置、目录、1 Hibernate概述2第一个Hibernate程序3 Hibernate配置文件4永久化对象5 Hibernate映射文件6 JPA注释介绍7个概述、2、 Hibernate体系结构简单Hibernate体系结构,Hibernate全面的解决方案体系结构,3,Hibernate全面的解决方案体系结构说明,SessionFactory单个数据库映射Session是应用程序和永久存储层之间交互的单线程对象瞬态对象系统创建new关键字的Java实例,不与Session关联,而是位于瞬态永久对象中,并且与该实例数据库关联的记录关闭对象,虽然PO实例曾经与Sessio
2、n实例相关联,但是由于Session的关闭等原因,PO实例从Session的管理中脱离所有永久化操作都必须在事务管理下进行,即使是只读操作也是如此。 连接提供器是用于生成JDBC连接的工厂,它充当连接池,抽象地隔离底层的数据源和驱动程序管理器。以及此对象仅在需要扩展应用程序时使用。 从流程图中可以看到,“事务工厂”(TransactionFactory )生成事务对象实例的工厂、5、Hibernate机制、6、以及Hibernate执行进程通过实例化Configeration对象,可以读取cfg.xml文件的放置内容,并根据相关需要创建表或与表建立映射关系。 (3)从实例化的Configera
3、tion对象制作sessionFactory实例。 (可以从sessionFactory实例创建session对象。 (5)一旦得到了session,就可以开始事务,以session接口提供的各种方式操作对数据库的访问。 除了相对复杂的全文搜索外,简单的操作还可以通过hibernate封装的session内置方法来实现。 (6)操作完成后,提交数据库操作结果,关闭Session连接。7,Hibernate配置、Configuration对象org.cfg.Configuration实例表示应用到SQL数据库的映射配置,而Configuration表示buildsession 使用cfg.xml
4、文件作为配置文件。 在不使用配置文件的情况下编码和创建配置对象。8、Hibernate部署、JDBC连接属性部署数据库直接部署JNDI数据源的连接属性部署Hibernate事务属性部署二次缓存关联属性部署外部连接获得属性部署其他一般部署、9、JDBC连接部署中最重要的设置、connecttion connection.username :连接到数据库的用户名。 connection.password :用于连接到数据库的密码。 connection.pool _ size设置hibernate数据库连接池的最大并发连接数。 dialect :设定用于数据库连接的方言。10、和其他常见配置属性,
5、show _ SQL :是否在控制台上输出由hibernate生成的SQL语句,或仅true或false两个值format_SQL :是否将SQL语句转换为适当格式的SQL语句。 use _ sql _ comments :是否在hibernate生成的SQL语句中添加有助于调试的关注点,只接受true和false两个值。 jdbc.fetch_size:指定JDBC捕获数的大小。 它可以接受调用Statement.setFetchSize ()方法的整数值。 JDBC.batch _ size -指定hibernate使用批量JDBC2更新的大小。 可以接受整数值。 推荐530的范围。con
6、nection.autocommit :设定是否自动发送。 通常不推荐自动提交。 hbm2DDL.auto :设置在创建会话工厂时创建Drop的数据表。 此属性可以有三个值:更新、创建和删除创建。11、目录、1 Hibernate概述2第一个Hibernate程序3 Hibernate配置文件4永久化对象5 Hibernate映射文件6 JPA Annotation介绍7个总结12、深入理解永久化类的要求, 使用非final类来重写equal ()和hashCode ()方法、13、和永久对象的状态,以确保用于标识提供没有残奥仪表的构造函数的属性的类型基本类型不会将set和get方法添加到永久
7、类的每个属性中。 永久对象PO=POJO映射文件PO如下:非稳态:如果PO实例没有与Session实例相关联,则该实例处于非稳态状态。 永久化:如果PO实例与Session实例相关联,并且该实例与数据库中的记录相关联。 脱管:以前PO实例与Session实例相关联,但由于Session的关闭等原因,PO实例脱离Session的管理时,将此状态称为脱管状态。 对PO的操作必须在Session的管理下才能与数据库同步。 Session由SessionFactory工厂生成,SessionFactory是数据库编译的内存镜像,通常与SessionFactory对象相对应。 SessionFactor
8、y对象由配置对象生成,配置负责加载Hibernate配置文件。14、永久性对象的状态、非稳态:对象由new操作符创建,与Hibernate Session不关联的对象被视为非稳态。 瞬态对象不会永久化到数据库中,也不会给予永久化id。 如果程序丢失对瞬态对象的引用,则垃圾回收机制将丢弃该瞬态对象。 使用Hibernate Session进入持久状态。15、永久化对象的状态、永久化:永久化实例具有与数据库对应的记录,并且具有永久化id。 永久化的实例可以是刚保存的,也可以是刚加载的。 在任何情况下,永久化对象都必须与指定的hibernate会话相关联。 hibernate检测持久对象的更改,并在
9、当前操作完成时将对象数据写入数据库。 开发人员不需要手动运行更新。16、永久化对象的状态、脱管:一个实例属于永久化状态,但是关联的Session关闭后,该对象变为脱管状态。 对脱机对象的引用仍然有效,您可以继续修改对象。 将脱机对象与会话相关联时,脱机对象将重新转换为持久状态,脱机更改不会丢失并写入数据库。 因此,逻辑上长的事务成为可能,被称为应用程序事务。 也就是说,事务可以跨越用户的思维、17、永久化对象的状态转移、18、永久化实体: 1、将串行化保存(object obj )对象永久化的状态2、void永久(object object PK )将obj对象永久化的状态此对象存储在数据库中
10、,指定主键值4、void persist(object obj,object pk ),设置主键,并添加19、以创建过渡对象/消息标题和消息内容设置n.setTitle (创建疯狂的Java联盟) n.setContent (创建疯狂的Java联盟,站点地址 ); /保存消息sess.save(n );20、Get和Load方法的差异Get () :即时加载对象的属性从即时数据库中查找Load () :延迟加载对象的属性仅在使用时从数据库中查找,21、更新永久化实体: u.set set 基本上,在sess.flush ()之前生成的update语句包
11、含where=、22、以更新受管理实体:如果程序更改管理状态,则程序必须显式使用新的Session保存更改。 hibernate提供了三种方法Update方法: 如果没有永久化,则使用save方法。 如果没有永久化,则使用。 updateOrSave ()方法:如果您不记得对象是否持久使用过期。23、merge方法与update方法的功能相同,不同之处在于执行sess.merge(a )方法后,a对象不是永久化对象的状态。 Update将a转换为永久化对象、24、永久化实体delete() Session的delete ()方法,将永久化对象或临时脱管对象转换为临时对象。 对于非管对象,del
12、ete ()方法从数据库中删除相应的记录;对于永久对象,delete ()从数据库中删除相应的记录,并从Session缓存中删除。 例如: sess2.delete(u ); 调用、25、和close()Session的close ()时,session的高速缓存为空,高速缓存中的所有永久化对象为脱管对象。 如果应用程序未引用这些脱机对象,则生命周期将终止。 evict() Session中的evict ()可以通过从缓存中删除永久对象使其脱机。 如果在Session的高速缓存中保存了大量的持久化对象,则会占用大量的内存空间。 为了提高性能,请考虑调用evict ()从缓存中删除某些永久化对象
13、。 但是,不建议使用evict ()。26,1.save,persist保存数据,persist不在事务外生成insert语句。 2 .删除2.delete、对象3.update,更新对象,如果数据库中没有记录,则会引发异常。 4 .根据get、ID检查,立即访问数据库。 5 .根据5.Load、ID检查(返回代理,不立即访问数据库)。 6.saveOrUpdate,merge (根据id和版本的值决定save或update ),调用merge来托管你的对象吗? 7.lock (使对象成为永久对象,但对象的状态不同步)。 在、27、Session中完成基本操作,在Session中完成Hiber
14、nate对数存储库的基本操作。 Session提供了基本的保存、更新、删除和查询方法。 保存,28,1数据,session.save ()方法用于永久保存实体对象。 例如,执行session.save ()方法不会立即更新数据库,而是仅在session清理高速缓存时执行insert语句。 人员用户=新人员(); 用户名称(zx ); transaction tx=session.begin transaction (); session.save (用户); session.flush (); mit (); session. close (); tx.close ();29、2加载数据、se
15、ssion的load ()和get ()方法可以基于指定的oid (对象标识符、对象id )从数据库中加载永久性对象。差异:如果数据库中没有与OID对应的记录,则load ()方法引发net.sf.ObjectNotfoundException异常,get ()方法返回null。 两种方法都将对象设置为持久状态,并且当前Session的、30,Session session1=sf.openSession (); transaction tx1=session.begin transaction (); 自定义会话1.load (自定义类,新长(1) ); 自定义会话1.load (自定义类,新长(2) ); mit (); Session1.close (); 更新数据、31、c、3,并且session.update ()方法可以将临时脱离管理或状态的对象重新并入Hibernate的内部缓存中,以便成为永久化对象。 调用session.upda
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026上海法律科技协会招聘文字方向实习生考试备考试题及答案解析
- 2026年榆林市红十字会系统事业单位人员招聘考试备考试题及答案
- 2026年四川事业单位考试真题及答案
- 2026年辽宁生态工程职业学院单招职业适应性测试题库及答案解析
- 2026年广西交安b证考试试题及答案解析
- 生态学科研试验基地项目使用林地可行性报告
- 2026年大庆职业学院单招职业技能考试题库附答案
- 2026广东珠海市某事业单位诚聘测绘人员1人考试备考题库及答案解析
- 2025年炼钢原料加工工考试题(附答案)
- 引调水工程水资源论证报告书
- 企业档案管理实务指南
- 耳鼻喉科三基培训课件
- 2026贵州旅游产业发展集团秋招试题及答案
- 国有林场2025年工作自查报告范文
- 2025内蒙古呼和浩特市消防救援支队招录政府专职消防员31人(公共基础知识)综合能力测试题附答案解析
- 2025年湖北省中考生物、地理合卷试卷真题(含答案解析)
- 起重机司机限门式起重机试题题库及答案
- DG-TJ08-2480-2025 建筑信息模型技术应用标准(民用建筑工程)
- 清理河道砂石合同(标准版)
- 广州中侨置业投资控股集团有限公司债权资产评估报告
- 无纺布行业基础知识培训课件
评论
0/150
提交评论