Hibernate 4.3.x には、getClassMapping(className)
class のメソッドがありorg.hibernate.cfg.Configuration
ます。しかし、Hibernate 5.x では、このgetClassMapping(className)
メソッドはConfiguration
クラスから削除されています。
Hibernate-5 でのコード置換はどうなりますか?
この移行の問題について助けてください。
Hibernate 4.3.x には、getClassMapping(className)
class のメソッドがありorg.hibernate.cfg.Configuration
ます。しかし、Hibernate 5.x では、このgetClassMapping(className)
メソッドはConfiguration
クラスから削除されています。
Hibernate-5 でのコード置換はどうなりますか?
この移行の問題について助けてください。
Get an object of PersisterCreationContext and then try this :-
PersistentClass persistentClass =
persisterCreationContext.getMetadata().getEntityBinding(className);
Pls check this link (Example 3.8. Native Bootstrapping - Putting it all together) to understand how to get standardRegistry, metadata and sessionFactory in Hibernate 5.x
Now as we were pulling metadata from persisterCreationContext and now we already had it so we can right away get the required PersistentClass object of any entity by
SessionFactory sessionFactory = metadata.getSessionFactoryBuilder().build();
PersistentClass persistentClass = metadata.getEntityBinding(className);
Hibernate 3 および 4 では、次のようにします。
URL configFileURL = getResource(); //some method to get hold of the location of your hibernate.cfg.xml
Configuration configuration = (new Configuration()).configure(configFileURL);
Iterator classMappings = configuration.getClassMappings();
while (classMappings.hasNext()) {
PersistentClass persistentClass = (PersistentClass) classMappings.next();
//do somthing
}
Hibernate 5 では、このようなメタデータを初期化します
URL configFileURL = getResource(); //some method to get hold of the location of your hibernate.cfg.xml
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure(configFileURL).build();
Metadata metaData = new MetadataSources(standardRegistry).getMetadataBuilder().build();
そして、メタデータで getEntityBindings() を使用します
Collection<PersistentClass> entityBindings = metadata.getEntityBindings();
Iterator<PersistentClass> iterator = entityBindings.iterator();
while (iterator.hasNext()) {
PersistentClass persistentClass = iterator.next();
//do somthing
}
これについては、Hibernate 5.0 Migration GuideおよびHibernate User Guide の Bootstrap の章で説明されています(特に「Legacy Bootstrapping」の付録を参照してください)。
要するに、構成は直線的なブートストラップに対して引き続きサポートされていますが、ブートストラップ プロセスに「フック」する場合は、新しいブートストラップ API を使用する必要があります。