java - 为什么不推荐使用 hibernate 的 ClassMetadata.getIdentifier(Object, EntityMode)

标签 java hibernate metadata introspection

刚升级到hibernate 3.6.0,发现这个方法被弃用了。

public Serializable getIdentifier(Object object, EntityMode entityMode) throws HibernateException;

它已经被这个“取代”了

public Serializable getIdentifier(Object entity, SessionImplementor session);

我不确定为什么要这样做,更重要的是,我不认为新方法是合适的替代方法。

我有代码通过使用此 API 从 XML(属性-> 属性等)和其他一些零碎的部分创建 hibernate 对象来绑定(bind) hibernate 对象/属性。

我一直认为 ClassMetadata 是用于此目的的公共(public) API。而且我知道 SessionImplementor 是一个内部 API,不能用于应用程序代码。

假设我在上述两个断言中是正确的,那么公共(public) API 需要私有(private) API 作为参数似乎是错误的?

有谁知道为什么要这样做以及我将来应该如何进行程序化 hibernate 对象访问?

(有趣的是,获取/设置属性值的方法仍然采用 EntityMode。)

最佳答案

我问自己同样的问题。我不知道为什么这样做,但现在我们需要一些肮脏的转换来使用公共(public) API。这根本没有意义。

关于java - 为什么不推荐使用 hibernate 的 ClassMetadata.getIdentifier(Object, EntityMode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275502/

相关文章:

java - 自然数使用递归的数字和

java - 是否可以使 Hibernate 查询在多记录查询中跳过坏记录?

java - 我自己的 Maven 插件如何获取 Maven Artifact 的可用版本?

java - spring-boot自动导入applicationContext.xml?

java - 在 Android 中使用原始类的 Intent 后,将 Intent 传回原始类的正确方法是什么?

java - 是否可以使用 Javascript/PHP 将文本渲染到 2D 图像上?

java - Lucene 中的查询

java - hibernate 错误 "unable to locate persister"

android - 如何混淆我用 kotlin 编码的 sdk(并摆脱元数据)

php - 在 WooCommerce 订单状态更改时添加用户元数据作为订单元