Hibernate学习总结_第1页
Hibernate学习总结_第2页
Hibernate学习总结_第3页
Hibernate学习总结_第4页
Hibernate学习总结_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一.对象语言和生产数据库不匹配:模型不匹配(阻抗不匹配)可以使用JDBC手动转换。分配给Sql参数和JDBC中的对象使用对象关系映射对象关系映射(ORM)框架:hibernate二.配置Hibernate安装。配置文件Hibernate.cfg.xml和Hperties.映射文件xxx.hbm.xml:对象模型和关系模型的映射三.开发过程1.由Domain Object-mapping-db2.存在DB启动,并使用工具创建mapping和Domain Object3.从配置文件开始四。Domain Object限制1.基本配置方法(必需)2.无意义旗标识别码(主键)选择性3.非final,影响懒惰的负载可选configuration session factory session transaction query criteriaConfiguration类Configuration类负责配置和启动Hibernate以创建SessionFactory对象。启动Hibernate时,Configuration类的实例首先查找映射文档的位置,读取配置,然后创建SessionFactory对象。SessionFactory界面SessionFactory界面负责初始化Hibernate。充当数据存储源的代理,负责创建Session对象。这里使用了工厂模式。SessionFactory不是轻量级的,因为通常一个项目只需要一个SessionFactory,如果需要操作多个数据库,则可以为每个数据库指定一个SessionFactory。会话接口会话接口是对持久性对象的CRUD操作(CRUD的任务是完成与数据库的通信,其中包含许多典型的SQL语句)。)。但是,请记住Session对象不是线程安全性。此外,Hibernate中的session不同于JSP应用程序中的HttpSession。其中,术语Session实际上是指Hibernate的session,后续HttpSession对象称为用户session。Transaction界面Transaction接口负责处理事务。这是可选的,开发人员也可以设计为自己编写默认事务代码Query和Criteria界面Query和Criteria界面执行各种数据库查询。可以通过两种方式使用HQL语句或SQL语句:1.get和load方法之间的区别Load/get方法都可以根据指定的实体类和id从数据库中读取记录,并返回相应的实体对象。Load返回不返回null值的代理对象。Get方法返回实例类。Load方法充分利用内部缓存和辅助缓存中的现有数据,而get方法仅在内部缓存中查找数据。这意味着该数据将越过辅助缓存直接调用SQL以完成数据读取。2.save方法和persist之间的区别如果Save方法在保存时不打开事务,则数据将插入数据库,事务将回退。Persist方法不会插入数据库数据,除非在保存时打开事务。3.物件状态:透过session和资料库的关系判断状态瞬间:新出的对象与会话或数据库无关,垃圾收集器会自动回收。永久:session内部对象、数据库、session(数据库中的数据已更改)可以知道。拆卸:session不在session内部,与数据库相对应,数据已更改的session未知。要使处于off pipe状态的数据更新数据,必须调用update语句来更新数据库。永久状态的对象也称为永久对象(PO),瞬时对象和脱离管道对象也称为值对象(VO)。SaveOrUpdate根据save-value设置确定是保存还是更新操作1)如果不知道对象处于什么状态时不知道是保存还是更新,可以使用saveOrUpdate方法。2)原则:Hibernate根据id确定,如果数据库具有调用update的值,则没有调用save的数据。2)saveOrUpdate和merge之间的区别:saveOrUpdate对象调用将成为永久对象;调用Merge对象或脱离管道Users.hbm.xml中的id可以确定临时状态。判断主键:unsaved-value=“-1”可以设置主关键点为-1时对象为瞬时;保存时:检查unsaved-value中的值是否与保存的id中的值相同。如果两个值相同,则调用数据保存,因为未保存。(通常不更改此属性。)Int:0是瞬时对象String:null表示这是瞬时对象Evict()清除缓存集新userinfo瞬间(transient)会话UserInfo持久的(永久)数据库数据库UserInfo自由状态(detached)Save()SaveOrUpdateUpdate()3,在hibernate中,使用hql语句查询实例类,使用list方法返回的结果是包含以下三个方案的List:1)。查询所有字段时,从list封装的对象(如“from实体类”)是实体类本身,并填充了每个属性。2)。仅查询一个字段。默认情况下,list包含Object对象。3)。查询两个或多个字段。默认情况下,list包装为Object,长度与查询的字段数匹配。在后一种情况下,不能直接转换为实例类中的对象,因此遍历标签很不方便。更简单的解决方案包括:在Hwl中选择新程序包的名称。类名(属性1,属性2.2)如果使用from实体类,同时在实例类中添加具有参数的配置方法,则参数的数量和顺序(属性1,属性2).)匹配,因此生成的list将继续存储实体类的对象并填充查询的属性,从而使使用更加容易。4、1级高速缓存管理应用程序调用Session的save()、update()、saveOrUpdate()、get()或load(),以及查询接口的list()、iterate()或fiile清理缓存时,Hibernate会根据缓存中对象的状态更改同时更新数据库。Session提供两种高速缓存管理方法,用于为应用程序清除evice (objectobj):高速缓存中指定为参数的持久性对象。Clear():清除高速缓存中的所有持久性对象。L2缓存管理3.1 .Hibernate的二级缓存策略的一般过程如下:1)查询条件时总是select * from table _ name where。执行SQL语句(例如(选择所有字段)查询数据库,然后一次导入所有数据对象。2)根据ID将所有获得的数据对象放入L2缓存。3) Hibernate根据ID访问数据对象时,首先在会话级别缓存中检查:找不到如果配置了次缓存,则在次缓存中检查:如果找不到,则查询数据库,然后根据ID将结果放入缓存中。4)在删除、更新和增加数据时同时更新缓存。Hibernate的L2缓存策略是ID查询的缓存策略,不适用于条件查询。为此,Hibernate提供了查询条件的Query Cache。Hibernate Query Language(HQL):查询对象而不是表,支持多态,对象名称区分大小写、Java类和属性。查询界面处理查询语句。两种方法:Query.list():查询所有结果集Query.uniqueResult():查询唯一结果集赋值语句有两种:。及格吗?编号传递参数,条件:分配是?的位置一致from users as users where users . name=?Query.setString(0,name);通过:param指定值的优点是,如果hql语句有多个名称作为参数,则必须指定一次值from users as users where users . name=: name Query.setString(name ,name);Oracle中的关键字不能用作表名。有两种方法可以将关键字更改为字符串Table= users 或反引号 table= user 字段名称的处理方式与表名称相同。/hql中的分页查询的优点是,可以在基于配置方言调用数据库的分页语句(例如,Oracle使用rownum)的数据库之间移植.query . setfirstresult(0);/第一条记录从0开始query . setmax results(10);/导入10个条件查询:可以添加Criteria接口调用、约束Restrictions:限制、约束类以提供一组静态方法的对象查询语句相关性:1、表格驱动式关系2、对象关联关系在Hibernate的多对一映射中,分配给many-to-one的column默认映射到关系表中的主键,该关系表反映了无意义的id并实现了默认外键连接。您可以不指定此标签的column,与name相同的字段将设置为默认值。Property-ref:可让您指定对应的外来索引键是什么资料栏您只需了解对象关系模型。然后,hibernate会自动处理表之间的关联关系。Hibernate的主键生成策略increment:hibernate自动以增量方式生成主键。Identity:从主数据库生成id;Sequence:Hibernate要求主数据库支持序列,方法是根据主数据库中的序列创建标志。Hilo:Hibernate根据high/low算法生成标志。Seqhio:使用高/低算法有效地生成long、short或int类型的说明符。Native:根据主数据库自动生成标识符的方式,自动选择increment、identity或hilo。UUID.hex:Hibernate使用128位UUID算法生成标志。Uuid.string:UUID被编码为16个字符长的字符串。Assigned: Java应用程序中负责创建标志的主键;Foreign:使用其他连接物件的标示;注:映射Set收集属性时,如果element元素包含not-null=tru

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论