hibernate的理解3.doc

hibernate的理解3.doc

ID:32021947

大小:102.50 KB

页数:40页

时间:2019-01-30

hibernate的理解3.doc_第1页
hibernate的理解3.doc_第2页
hibernate的理解3.doc_第3页
hibernate的理解3.doc_第4页
hibernate的理解3.doc_第5页
资源描述:

《hibernate的理解3.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Hibernate的检索策略包括类级别检索策略和关联级别检索策略。类级别检索策略有立即检索和延迟检索,默认的检索策略是立即检索。在Hibernate映射文件中,通过在上配置lazy属性来确定检索策略。对于Session的检索方式,类级别检索策略仅适用于load方法;也就说,对于get、qurey检索,持久化对象都会被立即加载而不管lazy是false还是true.一般来说,我们检索对象就是要访问它,因此立即检索是通常的选择。由于load方法在检索不到对象时会抛出异常(立即检索的情况下),因此我个人并不建议使用load检索;而由于中的lazy属性

2、还影响到多对一及一对一的检索策略,因此使用load方法就更没必要了。关联级别检索策略有立即检索、延迟检索和迫切左外连接检索。对于关联级别检索,又可分为一对多和多对多、多对一和一对一两种情况讨论。一对多和多对多关联关系一般使用配置。有lazy和outer-join属性,它们的不同取值绝对了检索策略。1)立即检索:这是一对多默认的检索策略,此时lazy=false,outer-join=false.尽管这是默认的检索策略,但如果关联的集合是无用的,那么就不要使用这种检索方式。2)延迟检索:此时lazy=true,outer-join=false(outer

3、-join=true是无意义的),这是优先考虑的检索方式。3)迫切左外连接检索:此时lazy=false,outer-join=true,这种检索策略只适用于依靠id检索方式(load、get),而不适用于query的集合检索(它会采用立即检索策略)。相比于立即检索,这种检索策略减少了一条sql语句,但在Hibernate中,只能有一个配置成outer-join=true.多对一和一对一检索策略一般使用配置。中需要配置的属性是outer-join,同时还需要配置one端关联的

4、s>的lazy属性(配置的可不是中的lazy哦),它们的组合后的检索策略如下:1)outer-join=auto:这是默认值,如果lazy=true为延迟检索,如果lazy=false为迫切左外连接检索。2)outer-join=true,无关于lazy,都为迫切左外连接检索。3)outer-join=false,如果lazy=true为延迟检索,否则为立即检索。可以看到,在默认的情况下(outer-join=auto,lazy=false),对关联的one端对象Hibernate采用的迫切左外连接检索。依我看,很多情况下,我们并不需要加载one

5、端关联的对象(很可能我们需要的仅仅是关联对象的id);另外,如果关联对象也采用了迫切左外连接检索,就会出现select语句中有多个外连接表,如果个数多的话会影响检索性能,这也是为什么Hibernate通过hibernate.max_fetch_depth属性来控制外连接的深度。对于迫切左外连接检索,query的集合检索并不适用,它会采用立即检索策略。对于检索策略,需要根据实际情况进行选择。对于立即检索和延迟检索,它们的优点在于select语句简单(每张表一条语句)、查询速度快,缺点在于关联表时需要多条select语句,增加了访问数据库的频率。因此在选择即检索和延迟检索时,

6、可以考虑使用批量检索策略来减少select语句的数量(配置batch-size属性)。对于切左外连接检索,优点在于select较少,但缺点是select语句的复杂度提高,多表之间的关联会是很耗时的操作。另外,配置文件是死的,但程序是活的,可以根据需要在程序里显示的指定检索策略(可能经常需要在程序中显示指定迫切左外连接检索)。为了清楚检索策略的配置效果如何,可以配置show_sql属性查看程序运行时Hibernate执行的sql语句。教你如何更简单的理解Hibernate框架本文主要介绍Hibernate框架的历史与背景、Hibernate定义、Hibernate的作用、H

7、ibernate的应用、HibernateAPI简介以及Hibernate的优缺点。一历史与背景1应用程序的分层体系结构随着计算机应用软件的发展,应用程序逐渐由单层体系结构发展为多层体系结构。其中,三层结构是目前典型的一种应用软件结构。◆表述层:提供与用户交互的界面,如GUI(图形用户界面),web页面等;◆业务逻辑层:负责各种业务逻辑,直接访问数据库,提供对业务数据的保存、更新、删除和查询操作;◆数据库层:负责存放管理应用的持久性业务数据三层结构的特点是:所有下层向上层提供调用的接口,具体实现细节对上层透明。层与层之间存在自

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

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

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