JPA 惰性插入
JPA lazy insert
有很多关于在 JPA 中延迟获取的帖子,例如休眠。但是,我找不到提到惰性插入的。
假设我的 DAO 有一个列表属性 public getter 和 setter。然而,我更喜欢一个一个地添加项目,而不是 setMyList(List<Type> mylist)
,从而产生一个像 addToMyList(Type item)
这样的界面。通常这会转化为每次调用时的 INSERT 语句,这听起来像是一个巨大的开销。在插入任何内容之前总结 DAO 上所有添加的最干净的方法是什么?
您是要在同一交易中还是在多个不同的交易中将项目添加到列表中?我不认为 delay/defer 插入许多不同的事务是不可能的,除非你有一些缓存服务刷新到你的数据存储不那么频繁。
如果是同一个事务,每次调用你的add()方法都不会触发实时插入;所有插入都将在您的 session/transaction 结束时一起执行(除非早些时候由来自同一 table 的 select 或手动 api 调用 flush 触发)。
有很多关于在 JPA 中延迟获取的帖子,例如休眠。但是,我找不到提到惰性插入的。
假设我的 DAO 有一个列表属性 public getter 和 setter。然而,我更喜欢一个一个地添加项目,而不是 setMyList(List<Type> mylist)
,从而产生一个像 addToMyList(Type item)
这样的界面。通常这会转化为每次调用时的 INSERT 语句,这听起来像是一个巨大的开销。在插入任何内容之前总结 DAO 上所有添加的最干净的方法是什么?
您是要在同一交易中还是在多个不同的交易中将项目添加到列表中?我不认为 delay/defer 插入许多不同的事务是不可能的,除非你有一些缓存服务刷新到你的数据存储不那么频繁。
如果是同一个事务,每次调用你的add()方法都不会触发实时插入;所有插入都将在您的 session/transaction 结束时一起执行(除非早些时候由来自同一 table 的 select 或手动 api 调用 flush 触发)。