浅谈hibernate中懒加载禁用操作

 更新时间:2020年10月19日 08:59:13   作者:haha_66666  
这篇文章主要介绍了浅谈hibernate中懒加载禁用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

浅谈hibernate中懒加载禁用操作

懒加载的概念:懒加载就是hibernate中的延迟加载,在hibernate中的一对多,多对多关系中通过对象导航来查询对象时一般默认的就是懒加载。就是当我们查询一个对象的时候,在默认情况下,返回的只是该对象的代理对象,当用户去使用该对象的属性是,才会向数据库中再一次发出查询语句。懒加载在某些情况下确实可以减少不必要的sql语句,但是有的情况下,还是会抛出异常。

下面我将介绍懒加载禁用的方式

方式一:

在需要禁用懒加载的实体对象的配置文件中配置lazy="false";

例如:

<many-to-one name="lkm_cust_id" lazy="false" column="lkm_cust_id" class="com.haha.domain.Customer"/>

方式二:

在service中强行加载这个代理对象,因为service层提交完事务之后,session就关闭了;所以要在session关闭之前把这个代理对象给加载了。

public Customer toedit(Customer customer) {
 Customer c= customerDao.toedit(customer);
 Hibernate.initialize(c);//强行加载
 return c;
 }

方式三:

注意:这种方法可以高效的解决我们的no-session问题

这个方法用于ssh整合时,其实它跟方式二的原因是一样的,但是解决的方式不同,这种方法是延长session的生命周期,让session在jsp页面加载完毕后在关闭。

这个过滤器不需要我们写,因为spring已经给我们提供了一个这样的过滤器类,我们只需配置就可以使用

在web.xml中配置

<!-- 解决no-session问题过滤器 
 通过filter来让session在jsp页面完毕后再关闭session
 注意: 所有Filter的配置都需要放置在struts2入口过滤器配置之前
 -->
 <filter>
 <filter-name>openSessionInView</filter-name>
 <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
 </filter>
 <filter-mapping>
 <filter-name>openSessionInView</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>

补充知识:hibernate中懒加载和急加载的区别?

1、fetch = FetchType.LAZY ----懒加载

在加载一个实体的时候,不会马上从数据库中加载,即从数据库中加载到内存中。

2、fetch = FetchType.EAGER ----急加载

在加载一个实体时,会立即从数据库中查询,与其关联的类也会被同时查询。

在我们使用@ManyToOne等时,都会被默认为急加载。

以上这篇浅谈hibernate中懒加载禁用操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中Integer两种转int方法比较

    Java中Integer两种转int方法比较

    本文主要介绍了Java Integer两种转int方法比较。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Java实现Excel表单控件的添加与删除

    Java实现Excel表单控件的添加与删除

    本文通过Java代码示例介绍如何在Excel表格中添加表单控件,包括文本框、单选按钮、复选框、组合框、微调按钮等,以及如何删除Excel中的指定表单控件,需要的可以参考一下
    2022-05-05
  • spring-security关于hasRole的坑及解决

    spring-security关于hasRole的坑及解决

    这篇文章主要介绍了spring-security关于hasRole的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Spring整合websocket整合应用示例(下)

    Spring整合websocket整合应用示例(下)

    这篇文章主要介绍了Spring整合websocket整合应用示例(下)的相关资料,需要的朋友可以参考下
    2016-04-04
  • Java 精炼解读数据结构的链表的概念与实现

    Java 精炼解读数据结构的链表的概念与实现

    链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的,每一个链表都包含多个节点,节点又包含两个部分,一个是数据域,一个是引用域
    2022-03-03
  • springboot整合EHCache的实践方案

    springboot整合EHCache的实践方案

    EhCache是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。这篇文章给大家介绍了springboot整合EHCache的实践方案,需要的朋友参考下
    2018-01-01
  • Java ThreadLocal原理解析以及应用场景分析案例详解

    Java ThreadLocal原理解析以及应用场景分析案例详解

    这篇文章主要介绍了Java ThreadLocal原理解析以及应用场景分析案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Mybatis返回结果封装map过程解析

    Mybatis返回结果封装map过程解析

    这篇文章主要介绍了Mybatis返回结果封装map过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • swagger配置正式环境中不可访问的问题

    swagger配置正式环境中不可访问的问题

    这篇文章主要介绍了swagger配置正式环境中不可访问的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java关键字super超详细解释

    Java关键字super超详细解释

    在Java中super是一个关键字,用于访问父类中的属性、方法或构造函数,这篇文章主要给大家介绍了关于Java关键字super超详细解释的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11

最新评论