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. loadrunner12-用Chrome如何录制脚本

    1.下载Chrome最新版本: 2.打开需要录制的网页,按下F12按钮: 3.在弹出框中,选择Network标签,在该标签下单击红色按钮(开始录制按钮): 4.按下F5刷新页面(不管是否需要录制当前页 ...

  2. MySql创建多表关联的步骤

    一,一对多表的创建 1.创建主表 create table HostTable( cid varchar(32) primary key, cname varchar(100)); 2.创建从表 cr ...

  3. 全球数据库-->基金/管理产品-->分类/行业平均

    ETF分类 GIFS台湾注册基金 GIFS开放式分类 GIFS德国注册基金 GIFS意大利注册基金 GIFS新兴市场 GIFS新加坡保险连结 GIFS新加坡注册基金 GIFS日本 GIFS比利时注册基 ...

  4. [Java]通过java获取计算机名

    通过java获取计算机名 String hostname = "Unknown"; try { InetAddress addr; addr = InetAddress.getLo ...

  5. C#的链表操作[数据结构-线性表]

    链式存储结构图解: 上图中,a1,是数据,紧跟着后面的d1是下一个节点的地址值.也就是一个节点的最后存储的是下一个节点的地址值,最后一个节点的存储的下一个地址值是null,代表链表结束. 1,定义链表 ...

  6. C语言基础课First作业

    一.大学和高中最大的不同是没有人天天看着你,也不会担心上课的时候班主任在后门偷偷瞄着我们,通过阅读邹欣老师的博客后,心目中理想的师生关系就是Coach/Trainee(健身教练/健身学员)的关系,想到 ...

  7. 阿里云服务器ECS按ctrl+alt+delete无法登录

    今天在使用阿里云服务器远程桌面的时候发现怎么也进入不了,远程桌面无法连接,于是想到了在阿里云服务器管理控制台可以使用连接管理终端进行远程桌面连接,下面详细介绍阿里云服务器操作经验. 操作步骤如下 登录 ...

  8. PHP(十二)文件操作

  9. MFC中的一般经验之谈----OnInitialUpdate

    在MFC程序设计中,按照传统的设计,如果处理WM_PAINT消息,一般会派生一个OnPaint函数,映射到WM_PAINT消息上进行绘图处理.但是很多程序中并没有出现OnPaint,一个OnDraw函 ...

  10. R12 更新对应用户的字符集

    R12 更新对应用户的字符集     症状:应用系统数据导出操作,经常发生导出文件(XLS / TSV)产生简体中文乱码. 方案:针对客户端当前用户进行字符集更新 ZHS16GBK,而不影响其他用户. ...