Hibernate之CRUD工具类
来源:互联网 发布:热玛吉效果怎么样知乎 编辑:程序博客网 时间:2024/05/22 12:56
- 创建SessionFactory类,用于获取Session,在使用SessionFactory时,需要注意,此类是一个重量级类,其对象占用大量资源,此处使用单例模式防止创建多个SessionFactory对象
package com.session.factory;//注意此处是我的包名,需要根据自身包名设置import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;public class HibernateSessionFactory { private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); private static org.hibernate.SessionFactory sessionFactory; private static Configuration configuration = new Configuration(); private static ServiceRegistry serviceRegistry; /** * 私有化构造函数,防止外界随意创建SessionFactory对象 */ private HibernateSessionFactory() { } /** * 静态代码块初始化数据 */ static { try { configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings( configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } catch (Exception e) { System.err.println("创建SessionFactory失败!"); e.printStackTrace(); } } /** *获取和当前线程关联的session */ public static Session getCurrentSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } /** * 重新初始化资源 * */ public static void rebuildSessionFactory() { try { configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings( configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } }/** * 关闭session * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } /** * 获取全新的session0 * */ public static Session getNewSession() { return sessionFactory.openSession(); }}
- 数据库工具类
import java.io.Serializable;import java.util.ArrayList;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import com.session.factory.HibernateSessionFactory;//需根据自己的SessionFactory位置设定public class MysqlHelper implements Serializable { /** * */ private static final long serialVersionUID = 1L; /** * 增加 * * @param o对象 * @param param参数 */ public static<T> void insert(T t, List<T> param) { // 获取session Session session = HibernateSessionFactory.getCurrentSession(); // 创建事物提交方式 Transaction transaction = null; try { transaction = session.beginTransaction(); session.save(t); transaction.commit(); } catch (Exception e) { // TODO: handle exception if (transaction == null) { // 出现异常回滚 transaction.rollback(); } throw new RuntimeException(e.getMessage()); } finally { HibernateSessionFactory.closeSession(); } } /** * 删除 * * @param dObj删除的字段所属类的class文件 * @param id主键号 */ public static <T> void delete(Class<T> dObj, Object id) { // 获取session Session session = HibernateSessionFactory.getCurrentSession(); // 创建事物提交方式 Transaction transaction = null; try { transaction = session.beginTransaction(); T obj = (T) session.get(dObj.getClass(), (Serializable) id); session.delete(obj); transaction.commit(); } catch (Exception e) { // TODO: handle exception if (transaction == null) { // 出现异常回滚 transaction.rollback(); } throw new RuntimeException(e.getMessage()); } finally { HibernateSessionFactory.closeSession(); } } /** * 修改数据库 * @param dObj * @param id * @return */ public static <T> Object update(Class<T> dObj, Object id) { // 获取session Session session = HibernateSessionFactory.getCurrentSession(); // 创建事物提交方式 Transaction transaction = null; try { transaction = session.beginTransaction(); T obj = (T) session.get(dObj.getClass(), (Serializable) id); transaction.commit(); return obj; } catch (Exception e) { // TODO: handle exception if (transaction == null) { // 出现异常回滚 transaction.rollback(); } throw new RuntimeException(e.getMessage()); } finally { HibernateSessionFactory.closeSession(); } } /** * 查询数据库 * * @param hql * @param param * @return */ public static List select(String hql, List<Object> param) { // 获取session Session session = HibernateSessionFactory.getCurrentSession(); // 创建事物提交方式 Transaction transaction = null; // 创建Query对象 Query query = session.createQuery(hql); try { transaction = session.beginTransaction(); // 处理任务 // 占位符填充索引 int index = 0; if (param != null && !param.isEmpty()) { for (Object setParam : param) query.setParameter(index++, setParam); } List list = query.list(); transaction.commit(); return list; } catch (Exception e) { // 出现错误回滚 if (transaction != null) { transaction.rollback(); } throw new RuntimeException(e.getMessage()); // TODO: handle exception } finally { HibernateSessionFactory.closeSession(); } }}
0 0
- Hibernate之CRUD工具类
- Hibernate读书笔记之CRUD
- hibernate之2.CRUD
- Hibernate之完整的CRUD
- Java Hibernate 之 CRUD 操作
- hibernate之crud小案例
- hibernate学习之实体类以及crud操
- Hibernate关联关系中的CRUD之C
- Hibernate关联关系中的CRUD之R
- Hibernate征途(三)之CRUD
- Hibernate程序之实现功能(CRUD)
- Hibernate之关联关系的CRUD
- hibernate---CRUD
- hibernate-CRUD
- 【Hibernate】crud
- hibernate 对实体类的crud操作
- web进修之—Hibernate CRUD(2)
- SSH之Hibernate读取配置文件工具类
- sdut2408 Pick apples
- LeetCode Nth Highest Salary
- 第八周的药之程序风格
- ZOJ 3866 Cylinder Candy
- HDU 4089 Activation 概率dp
- Hibernate之CRUD工具类
- C++中一种十分有用的容器vector
- 第九周期末(中)考试解题报告
- 二分查找之k小数
- LaTex 设置字体颜色
- 第十周程序设计课解题报告
- Cocos2d-3.x_视频播放(Android和iOS平台)
- 构建高可用Linux服务器笔记
- python 之文件操作