gpt4 book ai didi

java - Hibernate 中的 session.get() 和 session.byId().load() 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 07:51:30 24 4
gpt4 key购买 nike

当对象被写入数据库并且主标识符 (id) 已知时,可以通过以下代码检索它:

MyObject myObject = session.get(Class<MyObject>, id);

看来,还有一种类似于get()方法的方式:

IdentifierLoadAccess<MyObject> ila = session.byId(Class<MyObject>);
MyObject myObject = ila.load(id);

我正在寻找一个场景来阐明它们之间的差异,并描述在 API 中对同一作业使用两种相似方法的原因。

关于 session.load()session.byId().getReference() 可以问同样的问题。

编辑 1:
根据 API 文档:

  • session.get()session.byId().load() 返回具有给定标识符的持久实例,如果没有这样的持久实例则返回 null实例。

  • session.load()session.byId().getReference() 可能返回按需初始化的代理实例。

最佳答案

IdentifierLoadAccess 允许您指定:

  • 锁定选项
  • 缓存模式

甚至一次指定它们:

Post post = session
.byId( Post.class )
.with( new LockOptions( LockMode.OPTIMISTIC_FORCE_INCREMENT) )
.with( CacheMode.GET )
.load( id );

getting a Proxy reference 相同通过 getReference(id)

因此,它们比仅采用实体标识符的标准 getload 更灵活。

关于java - Hibernate 中的 session.get() 和 session.byId().load() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com