Bootstrap Hibernate 5 dengan Spring

1. Ikhtisar

Pada artikel ini, kita akan membahas cara melakukan bootstrap Hibernate 5 dengan Spring , menggunakan konfigurasi Java dan XML.

Artikel ini berfokus pada Spring MVC. Artikel kami Spring Boot with Hibernate menjelaskan cara menggunakan Hibernate di Spring Boot.

2. Integrasi Musim Semi

Bootstrap SessionFactory dengan API Hibernate asli agak rumit dan membutuhkan beberapa baris kode (lihat dokumentasi resmi jika Anda benar-benar perlu melakukannya).

Untungnya, Spring mendukung bootstrap SessionFactory - sehingga kita hanya memerlukan beberapa baris kode Java atau konfigurasi XML.

3. Ketergantungan Maven

Mari kita mulai dengan menambahkan dependensi yang diperlukan ke pom.xml kita terlebih dahulu :

 org.hibernate hibernate-core 5.4.2.Final 

Modul spring-orm menyediakan integrasi Spring dengan Hibernate:

 org.springframework spring-orm 5.1.6.RELEASE 

Demi kesederhanaan, kami akan menggunakan H2 sebagai database kami:

 com.h2database h2 1.4.197 

Terakhir, kita akan menggunakan Tomcat JDBC Connection Pooling, yang lebih cocok untuk tujuan produksi daripada DriverManagerDataSource yang disediakan oleh Spring:

 org.apache.tomcat tomcat-dbcp 9.0.1 

4. Konfigurasi

Seperti disebutkan sebelumnya, Spring mendukung kami dengan melakukan bootstrap pada Hibernate SessionFactory .

Yang harus kita lakukan adalah mendefinisikan beberapa kacang serta beberapa parameter .

Dengan Spring, kami memiliki dua opsi untuk konfigurasi ini , cara berbasis Java dan berbasis XML.

4.1. Menggunakan Konfigurasi Java

Untuk menggunakan Hibernate 5 dengan Spring, sedikit yang berubah sejak Hibernate 4: kita harus menggunakan LocalSessionFactoryBean dari paket org.springframework.orm.hibernate5 alih-alih org.springframework.orm.hibernate4 .

Seperti Hibernate 4 sebelumnya, kita harus mendefinisikan kacang untuk LocalSessionFactoryBean , DataSource , dan PlatformTransactionManager , serta beberapa properti khusus Hibernate.

Mari buat kelas HibernateConfig kita 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 opsi sekunder, kami juga dapat mengkonfigurasi Hibernate 5 dengan konfigurasi berbasis XML :

        create-drop   org.hibernate.dialect.H2Dialect              

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

Untuk mem-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 { // }

Alternatifnya, kita cukup memberikan file XML ke Spring Context, jika konfigurasi keseluruhan murni XML.

5. Penggunaan

Pada titik ini, Hibernate 5 dikonfigurasi sepenuhnya dengan Spring, dan kita dapat menyuntikkan Hibernate SessionFactory mentah secara langsung kapan pun kita perlu:

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

6. Database yang Didukung

Sayangnya, proyek Hibernate tidak menyediakan daftar resmi database yang didukung.

Karena itu, mudah untuk melihat apakah tipe database tertentu mungkin didukung , kita dapat melihat daftar dialek yang didukung.

7. Kesimpulan

Dalam tutorial singkat ini, kami mengonfigurasi Spring dengan Hibernate 5 - dengan konfigurasi Java dan XML.

Seperti biasa, kode sumber lengkap dari contoh tersedia di GitHub.