(1)pom中添加相关依赖

     <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.0.Final</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.22.RELEASE</version>
</dependency>

(2)声明数据源(Druid),声明Hibernate的Session工厂,声明Hibernate的事务管理器

 package cn.coreqi.config;

 import com.alibaba.druid.pool.DruidDataSource;
import org.hibernate.SessionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement; import javax.sql.DataSource;
import java.util.Properties;
@EnableTransactionManagement
@Configuration
public class JdbcConfig {
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/hibernatedemo?serverTimezone=UTC");
ds.setUsername("root");
ds.setPassword("123456");
return ds;
} @Bean
public LocalSessionFactoryBean sessionFactory(DataSource dataSource){
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setPackagesToScan(new String[]{"cn.coreqi.entities"});
Properties props = new Properties();
props.setProperty("dialect","org.hibernate.dialect.MySQL8Dialect");
props.setProperty("show_sql","true");
props.setProperty("format_sql","true");
props.setProperty("hbm2ddl.auto","update");
return sessionFactoryBean;
}
@Bean
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory){
return new HibernateTransactionManager(sessionFactory);
}
}

(3)编写dao

 package cn.coreqi.dao.SpringHibernate;

 import cn.coreqi.entities.Users;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.List; @Repository
@Transactional
public class UsersSpringHibernate {
@Autowired
private SessionFactory sessionFactory; private Session currentSession(){
return sessionFactory.getCurrentSession();
} public int count(){
return getAll().size();
} public Users getUserByUserName(String username){
CriteriaBuilder builder = currentSession().getCriteriaBuilder();
CriteriaQuery<Users> query = builder.createQuery(Users.class);
Root<Users> root = query.from(Users.class);
query.select(root).where(builder.equal(root.get("UserName"),username));
Query<Users> q = currentSession().createQuery(query);
return q.getSingleResult();
} public List<Users> getAll(){
CriteriaBuilder builder = currentSession().getCriteriaBuilder();
CriteriaQuery<Users> query = builder.createQuery(Users.class);
Root<Users> root = query.from(Users.class);
query.select(root);
Query<Users> q=currentSession().createQuery(query);
List<Users> users=q.getResultList();
return users;
}
public Users getUserById(Integer id){
return (Users)currentSession().get(Users.class,id);
}
}

Hibernate5和Hibernate4有些区别,具体的dao编写方式请参考这篇文章  https://www.boraji.com/hibernate-5-criteria-query-example

在Spring(4.3.22)中集成Hibernate(5.4.0)的更多相关文章

  1. spring中集成hibernate

    1.hibernate框架是什么? (1)hibernate对jdbc进行的封装 (2)开源的轻量级框架. 2.hibernate思想:ORM(对象关系映射) (1)让实体类和数据库中的表一一对应(表 ...

  2. Spring Boot(5) 集成Hibernate 日志配置

    https://blog.csdn.net/ZNG_XP/article/details/78131809 https://blog.csdn.net/u011998835/article/detai ...

  3. Spring集成Hibernate映射文件的4种方式

    概要: 在Spring的applicationContext.xml中集成Hibernate映射文件,通常是在<sessionFactory>这个Bean实例中进行的,若配置的映射文件较少 ...

  4. Spring 集成 Hibernate 和 Struts 2

    在Spring中集成Hibernate,实际上就是将Hibernate中用到的数据源DataSource. SessionFactory实例(通常使用Hibernate访问数据库时,应用程序会先创建S ...

  5. Eclipse juno 中安装 JBoss Tools,集成Hibernate

    在Eclipse中集成Hibernate工具可以帮助开发者根据数据库生成映射文件.注释代码以及反向工程. Hibernate Tools作为JBoss Tools的核心组件,已经被捆绑在JBoss T ...

  6. Jenkins中集成jmeter-maven插件

    转自:http://my.oschina.net/u/1377774/blog/168969 目录[-] 第一步.先在maven工程中单独使用jmeter-maven插件 0.环境 1.在POM.xm ...

  7. 【实验一 】Spring Boot 集成 hibernate & JPA

    转眼间,2018年的十二分之一都快过完了,忙于各类事情,博客也都快一个月没更新了.今天我们继续来学习Springboot对象持久化. 首先JPA是Java持久化API,定义了一系列对象持久化的标准,而 ...

  8. Spring 集成Hibernate的三种方式

    首先把hibernate的配置文件hibernate.cfg.xml放入spring的src目录下,并且为了便于测试导入了一个实体类Student.java以及它的Student.hbm.xml文件 ...

  9. spring mvc 集成hibernate步骤

    今天从头把hibernate集成进入springMVC框架中,把过程记录下来. 1.首先要在监听器配置文件中加入hibernate支持,如下: <?xml version="1.0&q ...

随机推荐

  1. QT 5 安装 vs2017 后,出现找不到 rc.exe 问题

    QT 5 安装 vs2017 后,出现找不到 rc.exe 问题 qt 5 cannot run 'rc.exe' 出现这种错误,是因为,rc.exe  未找到,也就是 SKD 路径不对. 找到相应的 ...

  2. mysql case when 判断null

    select  name,case WHEN m.NAME is null THEN '' else m.NAME end NAME1 from  sys_users

  3. MT【217】韦达定理应用

    若2018次方程$x^{2018}-4036x^{2017}+a_{2016}x^{2016}+\cdots+a_1x+a_0=0$ 有2018个正实数, 则对于所有可能的方程$\sum\limits ...

  4. DP的各种优化(动态规划,决策单调性,斜率优化,带权二分,单调栈,单调队列)

    前缀和优化 当DP过程中需要反复从一个求和式转移的话,可以先把它预处理一下.运算一般都要满足可减性. 比较naive就不展开了. 题目 [Todo]洛谷P2513 [HAOI2009]逆序对数列 [D ...

  5. Leetcode 28.实现strStr() By Python

    实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...

  6. 自学Aruba7.1-Aruba安全认证-WPA2-PSK认证(web页面配置)

    点击返回:自学Aruba之路 自学Aruba7.1-Aruba安全认证-WPA2-PSK认证(web页面配置) 步骤1 建立AP Group,命名为test-group 步骤2  将AP加入到AP G ...

  7. 自学Zabbix11.2 Zabbix SNMP安装

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix11.2 Zabbix SNMP安装 1. yum安装snmp 1 # yum i ...

  8. .NET:C# 如何实现的闭包?

    背景 C# 在编译器层面为我们提供了闭包机制(Java7 和 Go 也是这种思路),本文简单的做个解释. 背景知识 你必须了解:引用类型.值类型.引用.对象.值类型的值(简称值). 关于引用.对象和值 ...

  9. 总算知道怎样从ImageMagick生成的数据转换成HICON: MagickGetImageBlob & LookupIconIdFromDirectoryEx

    MagickSetImageFormat(mw, "ICO"); //设置这个后, MagickGetImageBlob 才能返回正确的值 size_t length; PBYTE ...

  10. 在exe运行界面按右键(不用按鼠标右键)

    单击该键 用于夜晚在exe运行界面粘贴数据.(正常来说直接按右键即可) 从此粘贴数据不会影响睡觉的人……etc.在宿舍……