1. Общ преглед
В тази статия ще обсъдим как да заредим Hibernate 5 с Spring , използвайки Java и XML конфигурация.
Тази статия се фокусира върху Spring MVC. Нашата статия Spring Boot с Hibernate описва как да използвате Hibernate в Spring Boot.
2. Пролетна интеграция
Стартирането на SessionFactory с естествения Hibernate API е малко сложно и би ни отнело немалко редове код (погледнете официалната документация, в случай че наистина трябва да направите това).
За щастие Spring поддържа bootstrapping на SessionFactory - така че се нуждаем само от няколко реда Java код или XML конфигурация.
3. Зависимости на Maven
Нека започнем, като първо добавим необходимите зависимости към нашия pom.xml :
org.hibernate hibernate-core 5.4.2.Final
Модулът spring-orm осигурява интеграцията на Spring с Hibernate:
org.springframework spring-orm 5.1.6.RELEASE
За по-голяма простота ще използваме H2 като наша база данни:
com.h2database h2 1.4.197
И накрая, ще използваме Tomcat JDBC Connection Pooling, който се вписва по-добре за производствени цели от DriverManagerDataSource, предоставен от Spring:
org.apache.tomcat tomcat-dbcp 9.0.1
4. Конфигурация
Както споменахме по-рано, Spring ни подкрепя с зареждане на Hibernate SessionFactory .
Всичко, което трябва да направим, е да дефинираме някои зърна, както и няколко параметъра .
С Spring имаме две възможности за тези конфигурации , базиран на Java и XML-базиран начин.
4.1. Използване на Java Configuration
За използването на Hibernate 5 с Spring малко се е променило от Hibernate 4: трябва да използваме LocalSessionFactoryBean от пакета org.springframework.orm.hibernate5 вместо org.springframework.orm.hibernate4 .
Подобно на Hibernate 4 преди, трябва да дефинираме боб за LocalSessionFactoryBean , DataSource и PlatformTransactionManager , както и някои специфични за Hibernate свойства.
Нека създадем нашия клас HibernateConfig, за да конфигурираме Hibernate 5 с 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. Използване на XML конфигурация
Като вторична опция можем да конфигурираме Hibernate 5 и с XML-базирана конфигурация :
create-drop org.hibernate.dialect.H2Dialect
Както лесно можем да видим, ние дефинираме абсолютно същите компоненти и параметри, както в Java-базирана конфигурация по-рано.
За да заредим XML в контекста на Spring , можем да използваме прост Java конфигурационен файл, ако приложението е конфигурирано с Java конфигурация:
@Configuration @EnableTransactionManagement @ImportResource({"classpath:hibernate5Configuration.xml"}) public class HibernateXMLConf { // }
Като алтернатива можем просто да предоставим XML файла на Spring Context, ако цялостната конфигурация е чисто XML.
5. Употреба
На този етап Hibernate 5 е напълно конфигуриран с Spring и ние можем да инжектираме суровия Hibernate SessionFactory директно, когато трябва:
public abstract class BarHibernateDAO { @Autowired private SessionFactory sessionFactory; // ... }
6. Поддържани бази данни
За съжаление проектът Hibernate не предоставя точно официален списък с поддържани бази данни.
Като се има предвид това, лесно е да се види дали даден тип база данни може да се поддържа , можем да разгледаме списъка на поддържаните диалекти.
7. Заключение
В този бърз урок конфигурирахме Spring с Hibernate 5 - както с Java, така и с XML конфигурация.
Както винаги, пълният изходен код на примерите е достъпен в GitHub.