2010-11-25 6 views
2

Gerade auf Hibernate 3.6.0 aktualisiert und festgestellt, dass diese Methode veraltet ist.Warum war der ClassMetadata.getIdentifier (Object, EntityMode) von hibernate veraltet

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

Es wird von diesem

public Serializable getIdentifier(Object entity, SessionImplementor session); 

‚ersetzt‘ wurde ich bin nicht sicher, warum dies geschehen ist, und was noch wichtiger ist, ich glaube nicht, dass die neue Methode ein geeigneter Ersatz ist.

Ich habe Code, der Hibernate Objekte/Eigenschaften bindet, indem Sie diese API verwenden, um Hibernate-Objekte aus XML (Attribute-> Eigenschaften usw.) und einige andere Bits und Stücke zu erstellen.

Ich habe ClassMetadata immer als eine öffentliche API betrachtet, die für diesen Zweck verwendet werden soll. Und ich bin mir bewusst, dass SessionImplementor eine interne API ist, die nicht als Anwendungscode verwendet werden kann.

Angenommen, ich bin in den beiden obigen Behauptungen korrekt, scheint es falsch, dass eine öffentliche API eine private API als Parameter erfordert?

Weiß jemand, warum dies getan wurde und wie ich in Zukunft den Programmatic Hibernate Object Access angehen sollte?

(Interessanterweise sind die Ermitteln/Setzen von Eigenschaftswert Methoden immer noch eine EntityMode nehmen.)

Antwort

0

frage ich mich die gleiche Frage. Ich habe keine Ahnung, warum das gemacht wurde, aber jetzt brauchen wir ein paar schmutzige Castings, um eine öffentliche API zu benutzen. Das ergibt überhaupt keinen Sinn.