Hibernate 工具类
1.HibernateConfigUtil.java(HIbernate配置工具类)
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateConfigUtil {
private static Configuration config;
private static SessionFactory sessionFactory;
//创建静态私有线程对象
private static ThreadLocal<Session> localSession=new ThreadLocal<>();
public HibernateConfigUtil(){}
static {
try{
// 读取解析hibernate.cfg.xml文件
config=new Configuration().configure();
//建立SessionFactory
sessionFactory=config.buildSessionFactory();
}catch (Exception e){
System.out.println("初始化加载异常");
e.printStackTrace();
}
} //获取session对象(类似于JDBC中的Connection对象con)
public static Session getSession(){
//获取当前线程中的session对象
Session session=localSession.get();
// 验证session对象是否为空
if(session==null){
session=sessionFactory.openSession();// 使用工厂对象生产session对象
localSession.set(session);// 将session对象放入线程
}
return session;
} //关闭session对象
public static void closeSession(){
//获取当前线程中的session对象
Session session=localSession.get();
localSession.set(null);// 清空线程中的session对象
if(session!=null){
session.close();
}
} public static void rebuildSessionfactory(){
try{
// 读取解析hibernate.cfg.xml文件
config=new Configuration().configure();
//建立SessionFactory
sessionFactory=config.buildSessionFactory();
}catch (Exception e){
System.out.println("初始化加载异常");
e.printStackTrace();
}
} public static SessionFactory getSessionFactory(){
return sessionFactory;
} public static Configuration getConfig(){
return config;
}
}
2.HibernateConnectUtil(Hibernate操作数据库工具类)
import EntityClass.EntryFirminfoEntity;
import EntityClass.StudentEntity;
import EntityClass.UserEntity;
import EntityClass.UserinfoEntity;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions; import java.util.ArrayList;
import java.util.List; public class HibernateConnectUtil {
public static void addData() {
//创建一个session对象
Session session1= HibernateConfigUtil.getSession();
//Fenciresult数据库表所对应的实体类,生成实体类对象,操作数据库表
UserEntity userEntity=new UserEntity();
//设置数据库对应字段的值,主键若是自增模式,无需人为设置
userEntity.setUserName("linda");
userEntity.setPassword("888888");
//把数据放入session中
session1.save(userEntity);
//开启一个新的事务Transaction
session1.beginTransaction();
//提交事务,此处才是真正与数据库交互的语句
session1.getTransaction().commit();
} //向数据库UserInfo表中添加用户注册的数据
public static void addUserInfoData(String username,String password,String email,String company) {
//创建一个session对象
Session session1= HibernateConfigUtil.getSession();
//Fenciresult数据库表所对应的实体类,生成实体类对象,操作数据库表
UserinfoEntity userinfoEntity=new UserinfoEntity();
//设置数据库对应字段的值,主键若是自增模式,无需人为设置
userinfoEntity.setUsername(username);
userinfoEntity.setPassword(password);
userinfoEntity.setEmail(email);
userinfoEntity.setFirm(company);
//把数据放入session中
session1.save(userinfoEntity);
//开启一个新的事务Transaction
session1.beginTransaction();
//提交事务,此处才是真正与数据库交互的语句
session1.getTransaction().commit();
} //利用hibernate对数据库中的EntryFirminfoEntity表进行查询,将查询结果放入一个集合返回
public static List<EntryFirminfoEntity> queryBasicMessageByUserInput(String companyname, String realAddress, String riskrank, ArrayList<String> firmtypeList){
//1.创建一个session对象
Session session1= HibernateConfigUtil.getSession();
//2.通过session的createCriteria创建一个Criteria 对象
Criteria criteria=session1.createCriteria(EntryFirminfoEntity.class);
//3. Criteria.add 增加约束。
criteria.add(Restrictions.like("firmName",companyname,MatchMode.ANYWHERE))
.add(Restrictions.like("address",realAddress,MatchMode.ANYWHERE));
//采用for循环,不断添加条件
for (int i = 0; i <firmtypeList.size() ; i++) {
criteria.add(Restrictions.like("mgTypeA",firmtypeList.get(i),MatchMode.ANYWHERE));
}
//4.调用list()方法返回查询结果的集合
List<EntryFirminfoEntity> firminfolist=criteria.list();
//开启一个新的事务Transaction
session1.beginTransaction();
//提交事务,此处才是真正与数据库交互的语句
session1.getTransaction().commit();
HibernateConfigUtil.closeSession();
return firminfolist;
} //利用hibernate对数据库中的StudentEntity表进行查询,将查询结果放入一个集合返回
public static List<StudentEntity> queryStudentByUserInput(String studentname, String realAddress, String riskrank){
//1.创建一个session对象
Session session1= HibernateConfigUtil.getSession();
//2.通过session的createCriteria创建一个Criteria 对象
Criteria criteria=session1.createCriteria(StudentEntity.class);
//3. Criteria.add 增加约束(连续加入两个条件,达到"或"的效果)[筛选条件为:name属性中有"l"的,或address属性中有"天"或"金"]
criteria.add(Restrictions.or(Restrictions.like("name", "l",MatchMode.ANYWHERE),
Restrictions.or(Restrictions.like("address", "天",MatchMode.ANYWHERE),Restrictions.like("address", "金",MatchMode.ANYWHERE))));
//4.调用list()方法返回查询结果的集合
List<StudentEntity> studentinfolist=criteria.list();
//开启一个新的事务Transaction
session1.beginTransaction();
//提交事务,此处才是真正与数据库交互的语句
session1.getTransaction().commit();
HibernateConfigUtil.closeSession();
return studentinfolist;
} }
Hibernate 工具类的更多相关文章
- Hibernate.基础篇《一》.Hibernate工具类.
Hibernate.基础篇<一>.Hibernate工具类. 话述: Hibernate.基础篇第一篇,前面是代码.后面再加理论&实践. Hibernate使用的版本是:5.x,在 ...
- hibernate工具类HibernateUtil详解
1.为什么要用hibernateUtil这个类,先看这段代码: //加载配置文件信息默认为hiberna.cfg.xml,如果不是的话那么就在config()方法里面去解析他 Con ...
- Hibernate工具类_抽取重复核心代码
问题:在Hibernate中每次执行一次操作总是需要加载核心配置文件,获取连接池等等都是重复动作,所以抽取出来 解决: package com.xxx.utils; /** *Hibernate的工具 ...
- hibernate工具类
因为hibernate的代码大部分都是固定的,为了将减少重复的代码的书写,可以将这些代码封装为一个工具类,获取hibernate的session对象. 1.工具类: package pers.zhb. ...
- 一个简单的Hibernate工具类HibernateUtil
HibernateUtil package com.wj.app.util; import org.hibernate.Session; import org.hibernate.SessionFac ...
- hibernate 配置文件 和一个 id生成类BaseEntity.java 和一个hibernate工具类 HibernatUtils.java
package com; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate ...
- javaweb常用工具类及配置文件备份
Javaweb常用工具类及配置文件备份 做一个代码备份,以后常用到的. hibernate工具类备份 package com.dly.service; /* * hibernate获取sessi ...
- Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加
package com.aherp.framework.util; import java.lang.reflect.Array;import java.lang.reflect.Method;imp ...
- 【SSH三大框架】Hibernate基础第二篇:编写HibernateUtil工具类优化性能
相对于上一篇中的代码编写HibernateUtil类以提高程序的执行速度 首先,仍然要写一个javabean(User.java): package cn.itcast.hibernate.domai ...
随机推荐
- golang之数组
1.数组:同一种数据类型的固定长度的序列. 2.数组定义:var a [len]int,例如:var a [5]int 3.长度是数组类型的一部分,因此,var a[5] int 和 var a[10 ...
- 查看binlog的简单方法!
今天学到一个牛逼的东西,不用打开binlog文件就可以查看binlog里的event事件. 命令为:show binlog events in 'mysql-bin.000001' from 4 li ...
- ubuntu 出来菜单栏和任务栏
http://blog.csdn.net/terence1212/article/details/51340595 命令行输入:sudo apt-get install compizconfig-se ...
- 动态执行SQL语句,接收返回值
一.exec和sp_executesql介绍 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句.比如,一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件, ...
- python 多线程简介
Thread类定义了以下常用方法与属性: Thread.getName() \Thread.setName():老方式用于获取和设置线程的名称,官方建议用Thread.name替代 Thread.id ...
- 推送安霸A7L实时视频至RTMP服务器(1)
使用librtmp进行H264与AAC直播 (转:http://www.codeman.net/2014/01/439.html) 1.帧的划分 1.1 H.264帧 对于H.264而言每帧的界定符为 ...
- Kubernetes基本原理与示例
1. Kubernetes介绍 基本概念 Pod Pod是Kubernetes的基本操作单元,把相关的一个或多个容器构成一个Pod,通常Pod里的容器运行相同的应用.Pod包含的容器运行在同一个Nod ...
- excel定位函数
在Excel中MATCH函数可以返回指定内容所在的位置,而INDEX又可以根据指定位置查询到位置所对应的数据,各取其优点,我们可以返回指定位置相关联的数据. MATCH函数(返回指定内容所 ...
- mysql 更新替换字符串
update zxg set newlevel = REPLACE(newlevel,'b','') 把表zxg中的newlevel字段中的b删除
- 如何从官网开始 mongo java
http://docs.mongodb.org/ecosystem/drivers/ MongoDB Driver Documentation Getting Started Installation ...