20201113问题记录

4 篇文章 0 订阅
3 篇文章 0 订阅

1、@Resource与@Autowired的区别

@Resource 是通过 byName方式注入的。对应的查找bean的ID属性

@Autowired是通过类型注入的。对应的class .可以配合@Qualifier 指定装配相同类型对象的哪个bean.

2、@Data@AllArgsConstructor@NoArgsConstructor注解

都是lombok的注解

@Data用来生成get/set方法

@AllArgsConstructor 用来生成包含所有参数的构造方法

@NoArgsConstructor 用来生成无参构造方法。

 

3、需要特别注意的一点,基础类型数据是有默认值的,使用JPA自动生成sql,可能会附带上,需要注意忽略掉!!!!

 

4、Spring JPA关联关系中一个fetch属性,有FetchType.EAGER 和FetchType.LAZY 两种选择 。

FetchType.EAGER 使用的JOIN.FetchType.LAZY 使用的SELECT

对于JPA,只有使用Spring-Data-Jpa提供的方法的时候,配置的FetchType.EAGER才会生效,关联一条sql。而自己定义的方法,只有在使用时才会加载,即使用的是懒加载JOIN.FetchType.LAZY。

懒加载的问题是会发送很多SQL请求。怎样避免这种情况,有两种方法:1、使用@Query 来写自己的JPQL  2、@NamedEntityGraphs、@NamedEntityGraph、@EntityGraph 使用这几个注解,

具体使用方法:

1、在Entity 上添加该注解

@NamedEntityGraphs({
    @NamedEntityGraph(name = "Book.fetch.category",attributeNodes = {@NamedAttributeNode("category")})
})

2、在需要及时加载的method的上使用

@EntityGraph(value = "Book.fetch.category") 或者也可以直接使用实体名 @EntityGraph(attributePaths = {"category"})

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值