Hibernate的工具类

1. 工具类HibernateUitl:

package com.huey.util;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistryBuilder;

/**
 * Hibernate工具类
 * @author Huey2672
 *
 */
public class HibernateUtil {

	private static SessionFactory sessionFactory;

	static {
		// 读取配置文件信息
		Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
		ServiceRegistryBuilder srb = new ServiceRegistryBuilder()
				.applySettings(cfg.getProperties());
		// 创建sessionFactory
		sessionFactory = cfg.buildSessionFactory(srb.buildServiceRegistry());
	}

	/**
	 * 获取session
	 * @return
	 */
	public static Session getSession() {
		Session session = null;

		try {
			// 打开session
			session = sessionFactory.openSession();
		} catch (Exception e) {
			e.printStackTrace();
		}

		return session;
	}

	/**
	 * 关闭session
	 * @param session
	 */
	public static void closeSession(Session session) {
		if (session != null) {
			try {
				// 关闭session
				session.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 添加对象实例
	 * @param object	要添加的对象实例
	 * @return
	 */
	public static boolean addObject(Object object) {
		HibernateTransaction saveTransaction = new HibernateSaveTransaction();
		return saveTransaction.doTransaction(object);
	}
	
	/**
	 * 删除对象实例
	 * @param clazz	要删除的对象实例的类型
	 * @param id	要删除的对象实例
	 * @return
	 */
	public static boolean deleteObjectById(Class<?> clazz, int id) {
		Object object = findObjectById(clazz, id);
		HibernateTransaction deleteTransaction = new HibernateDeleteTransaction();
		return deleteTransaction.doTransaction(object);
	}

	/**
	 * 更新对象实例
	 * @param object	要被更新的对象实例
	 * @return
	 */
	public static boolean updateObject(Object object) {
		HibernateTransaction updateTransaction = new HibernateUpdateTransaction();
		return updateTransaction.doTransaction(object);
	}

	/**
	 * 通过对象实例的ID查找对象实例
	 * @param clazz	对象的类型
	 * @param id 	对象实例的ID
	 * @return
	 */
	public static Object findObjectById(Class<?> clazz, int id) {
		Session session = getSession();
		Object object = session.get(clazz, id);
		session.close();
		return object;
	}
	

	/**
	 * 通过HQL语句查询
	 * @param hql	HQL语句
	 * @return		结果集
	 */
	public static List<?> queryByHql(String hql, Object... params) {
		Session session = getSession();
		Query query = session.createQuery(hql);
		for (int i = 0; i < params.length; i++) {
			query.setParameter(i, params[i]);
		}
		List<?> list = query.list();
		return list;
	}
}

2. Hibernate事务处理的抽象类HibernateTransaction:

package com.huey.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 * Hibernate事务处理,是save、delete、update等事务的模板方法
 * @author Huey2672
 *
 */
public abstract class HibernateTransaction {
	
	protected Session session;
	
	public final boolean doTransaction(Object object){
		boolean result = true;
		
		session = HibernateUtil.getSession();
		Transaction transaction = null;
		try {
			transaction = session.beginTransaction();		
			// 要执行的事务save、delete还是update?
			executeUpdate(object);
			transaction.commit();
		} catch (HibernateException e) {
			if(transaction != null){
				transaction.rollback();
			}
			e.printStackTrace();
			result = false;
		}finally{
			HibernateUtil.closeSession(session);
		}
		return result;
	}
	
	public abstract void executeUpdate(Object object);
}

3. Hibernate保存对象事务处理:

package com.huey.util;

/**
 * Hibernate保存对象事务处理
 * @author Huey2672
 *
 */
public class HibernateSaveTransaction extends HibernateTransaction {
	@Override
	public void executeUpdate(Object object) {
		session.save(object);
	}
}

4. Hibernate删除对象事务处理:

package com.huey.util;

/**
 * Hibernate删除对象事务处理
 * @author Huey2672
 *
 */
public class HibernateDeleteTransaction extends HibernateTransaction {
	@Override
	public void executeUpdate(Object object) {
		session.delete(object);
	}
}

5. Hibernate更新对象事务处理:

package com.huey.util;

/**
 * Hibernate更新对象事务处理
 * @author Huey2672
 *
 */
public class HibernateUpdateTransaction extends HibernateTransaction {
	@Override
	public void executeUpdate(Object object) {
		session.update(object);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值