Hibernate数据持久化类——ObjectDao.java

字体大小: 中小 标准 ->行高大小: 标准
package com.mr.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

/**
 * 数据持久化类
 * @author mao
 * @date 2013-1-14
 * @param <T>
 *
 */
public class ObjectDao<T> {
    private static SessionFactory sessionFactory = null;
    private Session session = null;//创建Session对象
    Transaction tx = null;//创建事务管理对象
    //连接数据库
    static {
        try {
            // 加载Hibernate配置文件
            Configuration cfg = new Configuration().configure();
            sessionFactory = cfg.buildSessionFactory();
        } catch (Exception e) {
            System.err.println("创建会话工厂失败");
            e.printStackTrace();
        }
    }
    /**
     * 删除数据
     * @param t
     * @return
     */
    public boolean deleteT(T t) {
        Session session = sessionFactory.openSession();//开启Session
        try {
            tx = session.beginTransaction();//开启事务
            session.delete(t);//执行数据删除操作
            tx.commit();//事务提交
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            session.close();//关闭Session
        }
        return true;
    }
    /**
     * 保存数据(保存的是对象)
     * @param t
     * @return
     */
    public boolean saveT(T t) {
        Session session = sessionFactory.openSession();//开启Session
        try {
            tx = session.beginTransaction();//开启事务
            session.save(t);//执行数据添加操作
            tx.commit();//事务提交
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            session.close();//关闭Session
        }
        return true;
    }
    /**
     * 修改数据
     * @param t
     * @return
     */
    public boolean updateT(T t) {
        Session session = sessionFactory.openSession();//开启Session
        try {
            tx = session.beginTransaction();//开启事务
            session.update(t);//执行数据修改操作
            tx.commit();//事务提交
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            session.close();//关闭Session
        }
        return true;
    }
    /**
     * 通过泛型定义的查询多条语句方法
     * @param hql
     * @return
     */
    public List<T> queryList(String hql) {
        session = sessionFactory.openSession();//开启Session
        tx = session.beginTransaction();//开启事务
        List<T> list = null;
        try {
            Query query = session.createQuery(hql);//利用hql语句进行查询
            list = query.list();//将返回的结果集转换成List集合
        } catch (Exception e) {
            e.printStackTrace();
        }
        tx.commit();//事务提交
        session.close();//关闭Session
        return list;//返回List集合
    }
    /**
     * 在查询结果中返回指定条数的方法
     * @param hql
     * @param showNumber 查询结果的条数
     * @param beginNumber 查询的起始位置
     * @return
     */
    public List<T> queryList(String hql, int showNumber, int beginNumber) {
        session = sessionFactory.openSession();//开启Session
        tx = session.beginTransaction();//开启事务
        List<T> list = null;
        try {
            Query query = session.createQuery(hql);//利用hql语句进行查询
            query.setMaxResults(showNumber);//设置查询结果的条数
            query.setFirstResult(beginNumber);//设置查询的起始位置
            list = query.list();//将返回的结果集转换成List集合
        } catch (Exception e) {
            e.printStackTrace();
        }
        tx.commit();//事务提交
        session.close();//关闭Session
        return list;//返回List集合
    }
    /**
     * 查询单条信息
     * @param hql
     * @return
     */
    public T queryFrom(String hql) {
        T t = null;//引用实体对象
        session = sessionFactory.openSession();//开启Session
        tx = session.beginTransaction();//开启事务
        try {
            Query query = session.createQuery(hql);//利用hql语句进行查询
            t = (T) query.uniqueResult();//将查询结果转换为实体对象
        } catch (Exception e) {
            e.printStackTrace();
        }
        tx.commit();//事务提交
        session.close();//Session关闭
        return t;//返回对象
    }

    
    public List queryListObject(String hql) {
        session = sessionFactory.openSession();
        tx = session.beginTransaction();
        List list = null;
        try {
            Query query = session.createQuery(hql);
            list = query.list();
        } catch (Exception e) {
            e.printStackTrace();
        }
        tx.commit();
        session.close();
        return list;
    }
}
复制代码

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/69440.html