Hibernate解决懒加载问题

1、问题:在一对多关系中,需要加载多的一方的数据

三种解决办法:

第一种:在service层查询多的一方(推荐使用-à在某一个业务需要使用到时才加载

 

第二种:在多的一方的实体类上加fetch=FetchType.EAGER---------效率最高(在某几个业务都需要使用多的一方的实体类时,推荐使用)

 

         @OneToMany(fetch=FetchType.EAGER)

         @JoinColumn(name= "C_TRANSIT_INFO_ID")

         @OrderColumn(name= "C_IN_OUT_INDEX")

         privateList<InOutStorageInfo> inOutStorageInfos = newArrayList<InOutStorageInfo>();

 

第三种:在web.xml中配置Filter过滤器:openEntityManagerInView  ---------------效率最低

<filter>

                   <filter-name>OpenEntityManagerInView</filter-name>

                   <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>

         </filter>

        

         <filter-mapping>

                   <filter-name>OpenEntityManagerInView</filter-name>

                   <url-pattern>/*</url-pattern>

         </filter-mapping>

2、解决懒加载问题:在一对多关系中,不需要加载多的一方的数据

两种解决办法:

1、  在web.xml文件中添加如下标签:

<!-- 解决spring data jpa事务懒加载 -->

<filter>

    <filter-name>openEntityManagerInViewFilter</filter-name>

<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>openEntityManagerInViewFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

 

 

2、 在实体类(get方法上)添加如下注解:

@JSON(serialize = false)

public Set<WorkBill> getWorkBills() {

    return workBills;

}

 

public void setWorkBills(Set<WorkBill> workBills) {

    this.workBills = workBills;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值