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 ...
随机推荐
- Warning: Data truncated for column 'xxxx' at row 1
The problem was that I changed the column's length only in the program.I had to do either change the ...
- zip多个分割文件合并
copy /b 1.z01+1.z02+1.zip 注意:1.zip在最后
- Groovy使用List集合
获取List集合中的元素 def lst = [1,3,4,1,8,9,2,6] println lst[-1] println lst[-2] 输出结果: 输出: 6 2 使用Range(范围)对象 ...
- Jakarta Commons Cookbook
Cookbook就是工具书,应该是前年看的,在中关村看的影印版,全英文,本书主要讲解了一下模块: Core:BeanUtils,Lang,Collections,logging Db:DbUtil ...
- BFS入门
#include<iostream> #include<cstring> #include<queue> using namespace std; #define ...
- UVa 818Cutting Chains (暴力dfs+位运算+二进制法)
题意:有 n 个圆环,其中有一些已经扣在一起了,现在要打开尽量少的环,使所有的环可以组成一条链. 析:刚开始看的时候,确实是不会啊....现在有点思路,但是还是差一点,方法也不够好,最后还是参考了网上 ...
- MySql MyBatis 自动生成主键返回null
<insert id="insert" parameterType="cn.zno.smse.pojo.UserScan" useGeneratedKey ...
- 2016-2017-2 20155223 实验二 《Java面向对象程序设计》
2016-2017-2 苏黄永郦 实验二 实验报告 前期准备工作--程序安装 -问题一 开始的时候我就在老师博客的指导下安装IDEA插件JUnit Generator V2.0.当然我的IDEA肯定没 ...
- SQL编程:group by合并结果字符串 ---> group_concat函数就能行
1.表结构 create table tt(id int,v varchar(30)); insert into tt values(1,'a'),(1,'b'),(2,'b ...
- java中父类的静态方法不能被重写
Java中父类的静态方法确实不能被重写的,但是有的人可能去做实验发现在子类中去重写父类static方法时,并没什么问题.这里我来具体解释下. public class Parent { public ...