Bootstrapping Hibernate 5 met lente
1. Overzicht
In dit artikel bespreken we hoe u dit kunt doen bootstrap Hibernate 5 met Spring, met behulp van zowel Java- als XML-configuratie.
Dit artikel richt zich op Spring MVC. In ons artikel Spring Boot with Hibernate wordt beschreven hoe u Hibernate in Spring Boot kunt gebruiken.
2. Lente-integratie
Bootstrapping een SessionFactory met de native Hibernate API is een beetje ingewikkeld en zou ons nogal wat regels code kosten (bekijk de officiële documentatie voor het geval je dat echt moet doen).
Gelukkig, Spring ondersteunt bootstrapping van de SessionFactory – zodat we slechts een paar regels Java-code of XML-configuratie nodig hebben.
3. Maven afhankelijkheden
Laten we beginnen door eerst de nodige afhankelijkheden toe te voegen aan onze pom.xml:
org.hibernate hibernate-core 5.4.2.Final
De spring-orm-module biedt de Spring-integratie met Hibernate:
org.springframework spring-orm 5.1.6.RELEASE
Voor het gemak gebruiken we H2 als onze database:
com.h2database h2 1.4.197
Ten slotte gaan we Tomcat JDBC Connection Pooling gebruiken, die beter past voor productiedoeleinden dan het DriverManagerDataSource geleverd door Spring:
org.apache.tomcat tomcat-dbcp 9.0.1
4. Configuratie
Zoals eerder vermeld, ondersteunt Spring ons met het opstarten van de Hibernate SessionFactory.
Het enige wat we hoeven te doen is definieer enkele bonen en enkele parameters.
Met de lente hebben we twee opties voor deze configuraties, een op Java gebaseerde en een op XML gebaseerde manier.
4.1. Java-configuratie gebruiken
Voor het gebruik van Hibernate 5 met Spring is er weinig veranderd sinds Hibernate 4: we moeten gebruiken LocalSessionFactoryBean uit de verpakking org.springframework.orm.hibernate5 in plaats van org.springframework.orm.hibernate4.
Net als bij Hibernate 4, moeten we bonen definiëren voor LocalSessionFactoryBean, Databron, en PlatformTransactionManager, evenals enkele Hibernate-specifieke eigenschappen.
Laten we onze HibernateConfig klas naar configureer Hibernate 5 met Spring:
@Configuration @EnableTransactionManagement openbare klasse HibernateConf {@Bean openbare LocalSessionFactoryBean sessionFactory () {LocalSessionFactoryBean sessionFactory = nieuwe LocalSessionFactoryBean (); sessionFactory.setDataSource (dataSource ()); sessionFactory.setPackagesToScan ({"com.baeldung.hibernate.bootstrap.model"}); sessionFactory.setHibernateProperties (hibernateProperties ()); return sessionFactory; } @Bean openbare DataSource dataSource () {BasicDataSource dataSource = nieuwe BasicDataSource (); dataSource.setDriverClassName ("org.h2.Driver"); dataSource.setUrl ("jdbc: h2: mem: db; DB_CLOSE_DELAY = -1"); dataSource.setUsername ("sa"); dataSource.setPassword ("sa"); retourneer dataSource; } @Bean openbaar PlatformTransactionManager hibernateTransactionManager () {HibernateTransactionManager transactionManager = nieuwe HibernateTransactionManager (); transactionManager.setSessionFactory (sessionFactory (). getObject ()); return transactionManager; } private finale Eigenschappen hibernateProperties () {Eigenschappen hibernateProperties = nieuwe eigenschappen (); hibernateProperties.setProperty ("hibernate.hbm2ddl.auto", "create-drop"); hibernateProperties.setProperty ("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); terugkeer hibernateProperties; }}
4.2. XML-configuratie gebruiken
Als secundaire optie kunnen we dat ook configureer Hibernate 5 met een op XML gebaseerde configuratie:
create-drop org.hibernate.dialect.H2Dialect
Zoals we gemakkelijk kunnen zien, definiëren we precies dezelfde bonen en parameters als in de eerder op Java gebaseerde configuratie.
Om de XML op te starten in de Spring-contextkunnen we een eenvoudig Java-configuratiebestand gebruiken als de applicatie is geconfigureerd met Java-configuratie:
@Configuration @EnableTransactionManagement @ImportResource ({"classpath: hibernate5Configuration.xml"}) openbare klasse HibernateXMLConf {//}
Als alternatief kunnen we het XML-bestand eenvoudig aan de Spring Context leveren, als de algehele configuratie puur XML is.
5. Gebruik
Op dit punt is Hibernate 5 volledig geconfigureerd met Spring, en dat kunnen we injecteer de ruwe Hibernate SessionFactory direct wanneer we:
openbare abstracte klasse BarHibernateDAO {@Autowired privé SessionFactory sessionFactory; // ...}
6. Ondersteunde databases
Helaas biedt het Hibernate-project niet echt een officiële lijst met ondersteunde databases.
Dat gezegd hebbende, het is gemakkelijk om te zien of een bepaald databasetype mogelijk wordt ondersteundkunnen we de lijst met ondersteunde dialecten bekijken.
7. Conclusie
In deze korte tutorial, we hebben Spring geconfigureerd met Hibernate 5 - met zowel Java- als XML-configuratie.
Zoals altijd is de volledige broncode van de voorbeelden beschikbaar op GitHub.