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. C语言命令行处理

    一.简介 getopt()函数是一个标准库调用,可允许您使用直接的 while/switch 语句方便地逐个处理命令行参数和检测选项(带或不带附加的参数).与其类似的getopt_long()允许在几 ...

  2. Linux TCP拥塞控制算法原理解析

    这里只是简单梳理TCP各版本的控制原理,对于基本的变量定义,可以参考以下链接: TCP基本拥塞控制http://blog.csdn.net/sicofield/article/details/9708 ...

  3. qt4代码到qt5代码出错

    1.error C2039: “toAscii”: 不是“QString”的成员 QT5.0.1把这个函数取消掉了,可以用toLatin1这个函数

  4. 快速完成网页设计,10个顶尖响应式HTML5网页模板助你一臂之力

    为了寻找一个优质的网页模板,网页设计师和开发者往往可能会花上大半天的时间.不过幸运的是,现在的网页设计师和开发人员已经开始共享HTML5,Bootstrap和CSS3中的免费网页模板资源.鉴于网站模板 ...

  5. CentOS 7如何开放其它的端口,比如8080

    CentOS 7如何开放其它的端口,比如8080 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop ...

  6. ui-router 之 $state.go

    Ui-router 之 $state.go   $state.go(arg1,arg2,arg3),有三个参数:第一个参数是你需要跳转的完整路由:第二个参数是query,当然不需要query,直接写{ ...

  7. 两种步骤 更改 EBS R12界面LOGO以及内容

    from:metalink more: Note 174219.1 - How To Change The Logo In The Oracle Application Menu Note 84975 ...

  8. docker 版本变化及说明

    Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月,有点类似于ubuntu的版本发布方式. 企业版自然会提供一些额外的服 ...

  9. [转载]灵动思绪EF(Entity FrameWork)

    很久之前就想写这篇文章了,但是由于种种原因,没有将自己学习的EF知识整理成一片文章.今天我就用CodeFirst和ModelFirst两种方式的简单案例将自己学习的EF知识做个总结. 在讲解EF之前, ...

  10. layou split 属性

    layou split:true -  显示侧分栏