快捷搜索:

Hibernate的检索策略

Hibernate的检索策略有三种:

1 , 急速检索

Hibernate的默认检索策略,当session 的 find() 措施时,会把相关联的表的数据整个查询出来,毛病:1,天生的select语句过多,频繁造访DB 。 2, 无意偶尔相关表的数据不必要,白白占用内存空间

2 ,延迟检索

当不应用相关表的数据时, 在映射文件中设置的,此时不会急速检索相关表,当利用法度榜样第一次要应用相关表的数据时,才从DB的相关表中检索相关数据。节省了空间,前进了效率。限定:只有当聚拢代理类的实例处于持久化状态时,才可以初始化,今后才可应用,否则会抛出延迟初始化差错:ERROR:LazerInitiater:63........

3 ,迫切左外连接

默认环境下,多对一关联采纳的措施。假如把映射文件的 的元素outer-join 值设为"true",则老是采纳此策略。优点:select 语句少,不督工具是处于持久化状态,照样处于游离状态,利用法度榜样都可以从一个工具导航到和它相关联的工具。 毛病:可能会白白挥霍一些内在空间,还有,繁杂的DB连接也会影响检索机能。适用范围: 多对一,一对一,(在一的那一方适用),利用法度榜样必要急速造访的工具,DB的表连接机能好

在利用法度榜样中显示指定3:

session.find( " from Customer as c where c.id=1 " );

session.find(" from Customer as c left join fetch c.orders where c.id=1 " )

第一句会采纳映射文件中的检索策略。而第二句会采纳3,会覆盖映射文件的策略。都邑调用语句:select * from CUSTOMERS left outer join ORDERS on CUSTOMERS.ID=ORDERS.CUSTOMERS_ID where CUSTOMERS.ID=1

您可能还会对下面的文章感兴趣: