封装Hibernate的Session操作和增删查改的工具类

来源:互联网 发布:手机淘宝比价软件 编辑:程序博客网 时间:2024/06/05 15:01

封装Session对象的操作

public class HFUtil {    //创建一个全局的SessionFactory对象    private static SessionFactory sf=null;    //定义一个线程的局部变量 这个变量用于唯一的标识一个线程    private static ThreadLocal<Session> threadLocal=new ThreadLocal<>();    static {        sf=new Configuration().configure().buildSessionFactory();    }    //获取session    public static Session getSession() {        //判断当前线程是否拥有session        Session session=threadLocal.get();        if(null==session) {            session=sf.openSession();            threadLocal.set(session);        }        //session.beginTransaction();        return session;    }    //关闭    public static void colse() {        //判断当前线程是否拥有session        Session session=threadLocal.get();        if(null!=session) {            //session.getTransaction().commit();            session.close();        }    }    private  HFUtil() {        // TODO Auto-generated constructor stub    }}

如果想代码更简洁,可以把session的事务开启和提交也进行封装。
session.beginTransaction();
session.getTransaction().commit();

封装增删查改工具类

public class HibernateUtil {    private HibernateUtil() {    }    //增    public static void insert(Object object) {        Session session=HFUtil.getSession();        session.beginTransaction();        session.save(object);        session.getTransaction().commit();        HFUtil.colse();    }    //删    public static void delete(Object object) {        Session session=HFUtil.getSession();        session.beginTransaction();        session.delete(object);        session.beginTransaction();        HFUtil.colse();    }    //改    public static void update(Object object) {        Session session =HFUtil.getSession();        session.beginTransaction();        session.update(object);        session.beginTransaction();        HFUtil.colse();    }    //查    public static <T> T select(int id ,Class clazz) {        Session session=HFUtil.getSession();        T t=(T) session.get(clazz,id);        HFUtil.colse();        return t;    }}
阅读全文
1 0
原创粉丝点击