JPA 中 find() 和 getReference() 的区别

在查询的时候有两个方法:find()和getReference(),这两个方法的参数以及调用方式都相同。那么这两个方法有什么不一样的呢?
find()称为 立即加载,顾名思义就是在调用的时候立即执行查询语句。
getReference()称为 延迟加载 或者 懒加载,它在调用的时候不会立即执行查询语句,而是在使用到查询对象的时候才会执行查询语句。

具体如下:

使用finde方法查询:

  1. 查询的对象就是当前对象本身
  2. 在调用find方法的时候,就会执行sql语句查询数据库

使用getReference方法查询:

  1. 查询到的对象是一个动态代理对象,并不是对象本身
  2. 在调用getReference方法的时候,不会执行sql语句查询数据库。当调用查询结果对象的时候,才会执行查询sql语句(什么时候用什么时候执行sql语句)
posted @ 2020-06-13 19:23  柠檬可乐小布丁  阅读(848)  评论(0编辑  收藏  举报