Hibernate知识点.docx

Hibernate知识点.docx

ID:32020141

大小:62.95 KB

页数:46页

时间:2019-01-30

Hibernate知识点.docx_第1页
Hibernate知识点.docx_第2页
Hibernate知识点.docx_第3页
Hibernate知识点.docx_第4页
Hibernate知识点.docx_第5页
资源描述:

《Hibernate知识点.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、01、Hibernate中:不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构?看表结构对应的类文件,比如UserInfo表对应的UserInfo.java文件02、hibernate数据查询的几种方式都是什么?答:①导航对象图检索 ②OID检索 ③HQL检索 ④QBC检索 ⑤本地SQL检索1.导航对象图检索方式。(根据已经加载的对象,导航到其他对象。)2.OID检索方式。(按照对象的OID来检索对象。)3.HQL检索方式。(使用面向对象的HQL查询语言。)4.QBC检索方式。(使用QBC(QureyByCriteria)API来

2、检索对象。)5.本地SQL检索方式。(使用本地数据库的SQL查询语句。)1.使用主键id加载对象(load(),get());2.通过对象导航,比如通过stu.getTeam()得到team的实例;3使用hql;4使用qbc(querybycriteria)5直接使用sql语句取得记录集;本地SQL一般都使用后面三种方式.注意.hql是面向对象的查询.语法和sql是基本一样的.不区分大小写的,但是注意的是对与对象.必须遵循对象的大小写.因为hql是对像查询..同时我们必须清楚.hql只能取得对象,而不支持uid(update,insert.

3、delete)03、Hibernate是如何延迟加载?1.Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)2.Hibernate3提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。04、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都是对对象进行操作,我们程序中把所有的表与类都映射在

4、一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many05、请介绍一下Hibernate的缓存机制?1.内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存2.二级缓存:a)应用及缓存b)分布式缓存条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非      关键数据c)第三方缓存的实现06、如何对hibernate进行优化?1.使用双向一对多关联,不使用单向一对多2.灵活使用单向一对多关联3.不用一对一,用多对一取代4.配置对象缓存,不使用集

5、合缓存5.一对多集合使用Bag,多对多集合使用Set6.继承类使用显式多态7.表字段要少,表关联不要怕多,有二级缓存07、在数据库中条件查询速度很慢时候,如何优化?  1.建索引  2.减少表的间关联  3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大表排在前面  4.简化查询字段,没用字段不要,已经对返回结果控制,尽量返回少量数据08、在Hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来结果集并没有个实体类和的对应,如何解决这个问题?解决方案一,按照Object[]数据取出数据

6、,然后自己组bean 解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就是Bean(type1filed1,type2field2),然后在hql里面就可以直接生成这个bean了。具体怎么用请看相关文档,我说的不是很清楚。09、session.load和session.get区别Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:  如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个tN

7、otFoundException。  Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。  load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。  Session在加载实体对象时,将经过的过程:  首先,Hibernate中维持了两级缓存。第一级缓存由Session实例维护,其中保持了Session当前所有关联实体的数据,也称为内部缓存。而第二级缓存则存在于SessionFactory层次,由当前所有由本Sess

8、ionFactory构造的Session实例共享。出于性能考虑,避免无谓的数据库访问,Session在调用数据库查询功能之前,会先在缓存中进行查询。首先在第一级缓存中,通过实体类

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。