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 工具类的更多相关文章

  1. Hibernate.基础篇《一》.Hibernate工具类.

    Hibernate.基础篇<一>.Hibernate工具类. 话述: Hibernate.基础篇第一篇,前面是代码.后面再加理论&实践. Hibernate使用的版本是:5.x,在 ...

  2. hibernate工具类HibernateUtil详解

    1.为什么要用hibernateUtil这个类,先看这段代码:     //加载配置文件信息默认为hiberna.cfg.xml,如果不是的话那么就在config()方法里面去解析他      Con ...

  3. Hibernate工具类_抽取重复核心代码

    问题:在Hibernate中每次执行一次操作总是需要加载核心配置文件,获取连接池等等都是重复动作,所以抽取出来 解决: package com.xxx.utils; /** *Hibernate的工具 ...

  4. hibernate工具类

    因为hibernate的代码大部分都是固定的,为了将减少重复的代码的书写,可以将这些代码封装为一个工具类,获取hibernate的session对象. 1.工具类: package pers.zhb. ...

  5. 一个简单的Hibernate工具类HibernateUtil

    HibernateUtil package com.wj.app.util; import org.hibernate.Session; import org.hibernate.SessionFac ...

  6. hibernate 配置文件 和一个 id生成类BaseEntity.java 和一个hibernate工具类 HibernatUtils.java

    package com; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate ...

  7. javaweb常用工具类及配置文件备份

    Javaweb常用工具类及配置文件备份   做一个代码备份,以后常用到的. hibernate工具类备份 package com.dly.service; /*  * hibernate获取sessi ...

  8. Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加

    package com.aherp.framework.util; import java.lang.reflect.Array;import java.lang.reflect.Method;imp ...

  9. 【SSH三大框架】Hibernate基础第二篇:编写HibernateUtil工具类优化性能

    相对于上一篇中的代码编写HibernateUtil类以提高程序的执行速度 首先,仍然要写一个javabean(User.java): package cn.itcast.hibernate.domai ...

随机推荐

  1. code1135 选择客栈

    首先,预处理三个数组. pre[x]表示在此之前颜色为x的客栈有多少个. f[x]表示在此之前的客栈中,某个点c,c的颜色为x,并且从c点到已经读入的点之间有费用小于p的客栈,这样的c点的个数 las ...

  2. Pwdump v7.1

    提取windows系统密码  和 hash值

  3. MyEclipse不能自动编译解决办法总结

    yEclipse在debug模式下,有时会碰到修改的文件无法自动编译的问题,以下的方法可以逐一尝试一下. 1.确保:Project->build automatically 已经被选上. 2.p ...

  4. [GO]go使用etcd

    package main import ( "go.etcd.io/etcd/clientv3" //笔者在使用clientv3的时间曾经使用过github.com/coreos/ ...

  5. GIT checkout 和 reset 区别

    git checkout -- file:撤销对工作区修改:这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file:这个命令改变的是工作区 git reset HEA ...

  6. python二叉树染色-有严重BUG

    #coding:utf-8 ''' 二叉树涂黑 输入: 5 2 1 -1 4 2 -1 5 4 -1 3 1 1 2 输出: 3 第二题是:斗地主 ''' import sys b=list() cl ...

  7. Cacti部署

    1>监控概述   通常运维人员在一个企业当中所需要管理一台或者多台服务器,或者甚至更多,特别是BAT公司或者门户级别的公司,一个人管理的服务器可能上百甚至上千台                  ...

  8. [SAP]编辑表

    SAP中,不能直接修改表的内容,可以用SE16N进行调试打开编辑选项,进行修改. (注:直接修改数据有风险,首先要确认修改数据的关系或做好必要的备份) 1:运行SE16N ,填好表名,参数等. 2:在 ...

  9. 命令行web客户端与HTTP REST API调试工具

    1.命令行web客户端 curl wget httpie 2.优雅的REST API调试工具 insomnia postman

  10. C# 判断质数的2种基本方法

    质数(prime number)又称素数,有无限个. 质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 目前学习了判断数字n是否为质数的2种基本方法: 一.计数法 根据定义,既然质数只 ...