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

时间:2010-11-25 09:30:45

标签: 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对象来绑定hibernate对象/属性。

我一直认为ClassMetadata是一个用于此目的的公共API。我已经意识到SessionImplementor是一个不能用作应用程序代码的内部API。

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

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

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

1 个答案:

答案 0 :(得分:0)

我问自己同样的问题。我不知道为什么这样做,但现在我们需要一些脏的铸件来使用公共API。这毫无意义。