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;
    }


}
原文地址:https://www.cnblogs.com/luckyplj/p/10734296.html