Bootstrapping Hibernate 5 dengan Spring

1. Gambaran keseluruhan

Dalam artikel ini, kita akan membincangkan cara bootstrap Hibernate 5 dengan Spring , menggunakan konfigurasi Java dan XML.

Artikel ini memberi tumpuan kepada Spring MVC. Artikel kami Spring Boot with Hibernate menerangkan cara menggunakan Hibernate di Spring Boot.

2. Integrasi Musim Bunga

Bootstrapping a SessionFactory dengan API Hibernate asli agak rumit dan akan membawa kita beberapa baris kod (lihat dokumentasi rasmi sekiranya anda benar-benar perlu melakukannya).

Nasib baik, Spring menyokong bootstrap SessionFactory - jadi kita hanya memerlukan beberapa baris kod Java atau konfigurasi XML.

3. Pergantungan Maven

Mari mulakan dengan menambahkan kebergantungan yang diperlukan pada pom.xml kami :

 org.hibernate hibernate-core 5.4.2.Final 

Modul spring-orm menyediakan penyatuan Spring dengan Hibernate:

 org.springframework spring-orm 5.1.6.RELEASE 

Demi kesederhanaan, kami akan menggunakan H2 sebagai pangkalan data kami:

 com.h2database h2 1.4.197 

Akhirnya, kita akan menggunakan Tomcat JDBC Connection Pooling, yang lebih sesuai untuk tujuan pengeluaran daripada DriverManagerDataSource yang disediakan oleh Spring:

 org.apache.tomcat tomcat-dbcp 9.0.1 

4. Konfigurasi

Seperti yang telah disebutkan sebelumnya, Spring menyokong kami dengan bootstrapping Hibernate SessionFactory .

Yang harus kita lakukan adalah menentukan sebilangan kacang dan juga beberapa parameter .

Dengan Spring, kami mempunyai dua pilihan untuk konfigurasi ini , cara berasaskan Java dan berasaskan XML.

4.1. Menggunakan Konfigurasi Java

Untuk menggunakan Hibernate 5 dengan Spring, tidak banyak yang berubah sejak Hibernate 4: kita harus menggunakan LocalSessionFactoryBean dari pakej org.springframework.orm.hibernate5 dan bukannya org.springframework.orm.hibernate4 .

Seperti dengan Hibernate 4 sebelumnya, kita harus menentukan kacang untuk LocalSessionFactoryBean , DataSource , dan PlatformTransactionManager , serta beberapa sifat khusus Hibernate.

Mari buat kelas HibernateConfig kami untuk mengkonfigurasi Hibernate 5 dengan Spring :

@Configuration @EnableTransactionManagement public class HibernateConf { @Bean public LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan( {"com.baeldung.hibernate.bootstrap.model" }); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; } @Bean public DataSource dataSource() { BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("org.h2.Driver"); dataSource.setUrl("jdbc:h2:mem:db;DB_CLOSE_DELAY=-1"); dataSource.setUsername("sa"); dataSource.setPassword("sa"); return dataSource; } @Bean public PlatformTransactionManager hibernateTransactionManager() { HibernateTransactionManager transactionManager = new HibernateTransactionManager(); transactionManager.setSessionFactory(sessionFactory().getObject()); return transactionManager; } private final Properties hibernateProperties() { Properties hibernateProperties = new Properties(); hibernateProperties.setProperty( "hibernate.hbm2ddl.auto", "create-drop"); hibernateProperties.setProperty( "hibernate.dialect", "org.hibernate.dialect.H2Dialect"); return hibernateProperties; } }

4.2. Menggunakan Konfigurasi XML

Sebagai pilihan sekunder, kita juga dapat mengkonfigurasi Hibernate 5 dengan konfigurasi berasaskan XML :

        create-drop   org.hibernate.dialect.H2Dialect              

Seperti yang dapat kita lihat dengan mudah, kita mendefinisikan kacang dan parameter yang sama seperti pada konfigurasi berasaskan Java sebelumnya.

Untuk bootstrap XML ke dalam konteks Spring , kita dapat menggunakan file konfigurasi Java sederhana jika aplikasi dikonfigurasi dengan konfigurasi Java:

@Configuration @EnableTransactionManagement @ImportResource({"classpath:hibernate5Configuration.xml"}) public class HibernateXMLConf { // }

Sebagai alternatif, kita hanya dapat memberikan fail XML ke Spring Context, jika keseluruhan konfigurasi adalah XML.

5. Penggunaan

Pada ketika ini, Hibernate 5 dikonfigurasikan sepenuhnya dengan Spring, dan kami dapat menyuntik Hibernate SessionFactory mentah secara langsung setiap kali kami perlu:

public abstract class BarHibernateDAO { @Autowired private SessionFactory sessionFactory; // ... }

6. Pangkalan Data yang disokong

Malangnya, projek Hibernate tidak memberikan senarai rasmi pangkalan data yang disokong.

Oleh itu, mudah untuk melihat apakah jenis pangkalan data tertentu mungkin disokong , kita dapat melihat senarai dialek yang disokong.

7. Kesimpulannya

Dalam tutorial ringkas ini, kami mengkonfigurasi Spring dengan Hibernate 5 - dengan konfigurasi Java dan XML.

Seperti biasa, kod sumber penuh contoh terdapat di GitHub.