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.