在Spring(4.3.22)中集成Hibernate(5.4.0)
2023-09-11 14:18:14 时间
(1)pom中添加相关依赖
1 <dependency> 2 <groupId>org.hibernate</groupId> 3 <artifactId>hibernate-core</artifactId> 4 <version>5.4.0.Final</version> 5 </dependency> 6 7 <dependency> 8 <groupId>org.springframework</groupId> 9 <artifactId>spring-orm</artifactId> 10 <version>4.3.22.RELEASE</version> 11 </dependency>
(2)声明数据源(Druid),声明Hibernate的Session工厂,声明Hibernate的事务管理器
1 package cn.coreqi.config; 2 3 import com.alibaba.druid.pool.DruidDataSource; 4 import org.hibernate.SessionFactory; 5 import org.springframework.context.annotation.Bean; 6 import org.springframework.context.annotation.Configuration; 7 import org.springframework.orm.hibernate5.HibernateTransactionManager; 8 import org.springframework.orm.hibernate5.LocalSessionFactoryBean; 9 import org.springframework.transaction.annotation.EnableTransactionManagement; 10 11 import javax.sql.DataSource; 12 import java.util.Properties; 13 @EnableTransactionManagement 14 @Configuration 15 public class JdbcConfig { 16 @Bean 17 public DataSource dataSource(){ 18 DruidDataSource ds = new DruidDataSource(); 19 ds.setDriverClassName("com.mysql.jdbc.Driver"); 20 ds.setUrl("jdbc:mysql://localhost:3306/hibernatedemo?serverTimezone=UTC"); 21 ds.setUsername("root"); 22 ds.setPassword("123456"); 23 return ds; 24 } 25 26 @Bean 27 public LocalSessionFactoryBean sessionFactory(DataSource dataSource){ 28 LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); 29 sessionFactoryBean.setDataSource(dataSource); 30 sessionFactoryBean.setPackagesToScan(new String[]{"cn.coreqi.entities"}); 31 Properties props = new Properties(); 32 props.setProperty("dialect","org.hibernate.dialect.MySQL8Dialect"); 33 props.setProperty("show_sql","true"); 34 props.setProperty("format_sql","true"); 35 props.setProperty("hbm2ddl.auto","update"); 36 return sessionFactoryBean; 37 } 38 @Bean 39 public HibernateTransactionManager transactionManager(SessionFactory sessionFactory){ 40 return new HibernateTransactionManager(sessionFactory); 41 } 42 }
(3)编写dao
1 package cn.coreqi.dao.SpringHibernate; 2 3 import cn.coreqi.entities.Users; 4 import org.hibernate.Session; 5 import org.hibernate.SessionFactory; 6 import org.hibernate.query.Query; 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.stereotype.Repository; 9 import org.springframework.transaction.annotation.Transactional; 10 11 import javax.persistence.criteria.CriteriaBuilder; 12 import javax.persistence.criteria.CriteriaQuery; 13 import javax.persistence.criteria.Root; 14 import java.util.List; 15 16 @Repository 17 @Transactional 18 public class UsersSpringHibernate { 19 @Autowired 20 private SessionFactory sessionFactory; 21 22 private Session currentSession(){ 23 return sessionFactory.getCurrentSession(); 24 } 25 26 public int count(){ 27 return getAll().size(); 28 } 29 30 public Users getUserByUserName(String username){ 31 CriteriaBuilder builder = currentSession().getCriteriaBuilder(); 32 CriteriaQuery<Users> query = builder.createQuery(Users.class); 33 Root<Users> root = query.from(Users.class); 34 query.select(root).where(builder.equal(root.get("UserName"),username)); 35 Query<Users> q = currentSession().createQuery(query); 36 return q.getSingleResult(); 37 } 38 39 public List<Users> getAll(){ 40 CriteriaBuilder builder = currentSession().getCriteriaBuilder(); 41 CriteriaQuery<Users> query = builder.createQuery(Users.class); 42 Root<Users> root = query.from(Users.class); 43 query.select(root); 44 Query<Users> q=currentSession().createQuery(query); 45 List<Users> users=q.getResultList(); 46 return users; 47 } 48 public Users getUserById(Integer id){ 49 return (Users)currentSession().get(Users.class,id); 50 } 51 }
Hibernate5和Hibernate4有些区别,具体的dao编写方式请参考这篇文章 https://www.boraji.com/hibernate-5-criteria-query-example
相关文章
- spring 之 lookup-method & replace-method
- Spring MVC文件上传
- spring: 在Spring应用中使用JDBC(使用profiles选择数据源/使用基于JDBC驱动的数据源)
- Spring Boot WebFlux 集成 Mongodb 数据源操作
- spring hiberante 集成出现异常 java.lang.ClassNotFoundException: org.hibernate.engine.SessionFactoryImplementor
- spring boot:集成支付宝(沙箱环境)(spring boot 2.4.0 / wap/h5方式 )
- spring boot 集成 kaptcha
- spring boot2.x中集成H2数据库
- Atitit springboot mybatis spring 集成 Springboot1.4 mybatis3.4.6 /springbootMybatis 目录 1.1. 设置map
- Redis 缓存 + Spring 的集成示例
- 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用
- 高效实现Web开发:掌握Spring Boot 2高级模块Thymeleaf的神奇妙用
- 华为云应用服务网格最佳实践之从Spring Cloud 到 Istio
- 在Spring Cloud中集成和使用CSE快速实现商业产品
- Spring 是如何解决循环依赖的?
- Spring MVC 学习总结(十)——Spring+Spring MVC+MyBatis框架集成(IntelliJ IDEA SSM集成)
- Spring集成Quartz框架的两种方式。
- Spring实战——缓存
- Spring集成Mybatis配置文件的简单理解
- Spring MVC密码处理
- spring cloud:三、断路器(hystrix)