25

Hibernate 4.3.x には、getClassMapping(className)class のメソッドがありorg.hibernate.cfg.Configurationます。しかし、Hibernate 5.x では、このgetClassMapping(className)メソッドはConfigurationクラスから削除されています。

Hibernate-5 でのコード置換はどうなりますか?

この移行の問題について助けてください。

4

4 に答える 4

2

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);
于 2015-10-13T08:04:28.890 に答える
2

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
  }
于 2017-04-27T08:53:13.590 に答える
0

これについては、Hibernate 5.0 Migration GuideおよびHibernate User Guide の Bootstrap の章で説明されています(特に「Legacy Bootstrapping」の付録を参照してください)。

要するに、構成は直線的なブートストラップに対して引き続きサポートされていますが、ブートストラップ プロセスに「フック」する場合は、新しいブートストラップ API を使用する必要があります。

于 2015-11-13T15:16:07.740 に答える