Ik heb hetzelfde probleem opgelost met Hibernate 5. Er is een probleem met deze code
Configuration configuration = new Configuration();
configuration.configure();
ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(
configuration.getProperties()).build();
SessionFactory sf = configuration.buildSessionFactory(sr);
Deze code werkt prima voor Hibernate 4.3.5, maar dezelfde code heeft hetzelfde probleem voor Hibernate 5.
Wanneer u configuration.buildSessionFactory(sr)
. doet , met Hibernate 5, Configuration
verliest alle informatie over mapping die wordt opgehaald door configuration.configure()
.
Oplossing
Om het probleem op te lossen, gebruik je de standaard configuratiebestanden hibernate.cfg.xml
en hibernate.properties
, kunt u op deze manier de sessiefabriek maken (zonder ServiceRegistry
)
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Eigenschappen laden
Als je eigenschappen in een ander bestand hebt dan hibernate.properties
, kunt u een sessiefabriek bouwen met StandardServiceRegistryBuilder
(in ieder geval, als je hibernate.properties
hebt en een ander bestand, het wordt beide geladen)
Eigenschappen laden als hulpbron
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
U moet hibernate-h2.properties
. hebben in het klassenpad (hoofdmap van de bronnenmap, bronnenmap). U kunt ook een pad specificeren vanuit de rootbronmap/com/github/xxx/model/hibernate-h2.properties
.
Eigenschappen laden vanaf een pad in het bestandssysteem
File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
Een voorbeeld van een consoletoepassing die deze aanpak gebruikt, vindt u hier fluent-hibernate-mysql . Het gebruikt een utility class om de session factory te bouwen vanuit de vloeiend-hibernate bibliotheek .
Onjuiste slaapstand 5 tutorial
Er is een onjuist voorbeeld in Hibernate 5 tutorial 1.1.6. Opstarten en helpers . Het gebruikt deze code
return new Configuration().configure().buildSessionFactory(
new StandardServiceRegistryBuilder().build() );
Het doet geen goede configuratie.