JPA 一对多延迟加载与关系维护

JPA一对多延迟加载(orders和orderdetails), 对于一次查询大量数据和多线程并发非常有帮助。

1. 一对多一般默认就是延迟加载, 在用到具体属性的时候才会执行SQL去抓取数据。

entity.getItems(); //不执行sql
entity.getItems().getProperty(); // 具体使用的才会执行sql

   1.1 多对一默认是关闭懒加载的, 需要注解显示开启懒加载

2. 属性级延迟加载注解(就算是blob等大字段JPA好像也不支持, 可以单独设置为一个实体, 然后做OneToOne懒加载)

@Basic(fetch = FetchType.Lazy)

    package cn.itcast.bean;   
      
    import java.util.HashSet;   
    import java.util.Set;   
      
    import javax.persistence.CascadeType;   
    import javax.persistence.Column;   
    import javax.persistence.Entity;   
    import javax.persistence.FetchType;   
    import javax.persistence.GeneratedValue;   
    import javax.persistence.Id;   
    import javax.persistence.OneToMany;   
    import javax.persistence.Table;   
      
    @Entity  
    @Table(name="orders")   //把表名改成orders(默认表名是order),防止默认表名order与数据库的关键字"order by"中的order冲突。不改的话测试不成功,出现异常,orderitem表建立成功,order表建不了。   
    public class Order {   
        private String orderId;   
        private Float amount = 0f;   
        private List<OrderDetail> orderDetails= new ArrayList<OrderDetail>();   
      
        @Id //要注意:目前JPA规范并没有提供UUID这种生成策略,目前主键值只提供了整型的生成方式,所以@GeneratedValue这个注解就不能在这里用上,不能对字符串进行id自增长。   
  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值