springboot引入hibernate
springboot直接引入hibernate,用applications.properties當(dāng)配置文件是很簡單的:
spring.application.name=test-hibernate
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
然后直接打一個(gè)注解,就可以用hibernate了:
@PersistenceContext
private EntityManager mEM;
下面獲取所有的實(shí)體類的名字:
var emf = mEM.getEntityManagerFactory();
var model = emf.getMetamodel();
var ets = model.getEntities();
for(var et:ets) {
var s = et.getName();
System.out.println(s);
}
但是這種方式下,hibernate.cfg.xml不被加載,總不能所有的配置都在applications.properties里做,hibernate也要有自己的配置文件。deepseek上問了半天,給出的思路,是接替一個(gè)什么factory,我寫了一個(gè)HibernateConfig.java,測試被spring加載了,但是里面的東西好像不生效,因?yàn)槲夜室鈱戝e(cuò)了幾個(gè)字也沒事:
package com.example.hibernate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import javax.sql.DataSource;
import java.util.Properties;
@Configuration
public class HibernateConfig {
@Autowired
private DataSource dataSource;
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan("com.example.hibernate"); // 掃描實(shí)體類所在的包
// 使用 Hibernate 作為 JPA 實(shí)現(xiàn)
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
// 加載 hibernate.cfg.xml
Properties properties = new Properties();
properties.put("hibernate.ejb.cfgfile", "classpath:hibernate.cfg.xml");
em.setJpaProperties(properties);
System.out.println("jjjjjj");
return em;
}
}
后續(xù)再看把。

浙公網(wǎng)安備 33010602011771號