Hibernate 系列教程1-枚举单例类

时间:2024-11-23 00:07:44

你还在为不知道怎样正确使用Hibernate而纠结吗

你还在为不知道怎样配置映射文件而郁闷吗

枚举单例(Enum Singleton)

是实现单例模式的一种方式而已,不过写法简单,创建枚举默认也是线程安全的,比较好用。

package com.jege.hibernate.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry; import com.jege.hibernate.execption.LogicExecption; /**
* @author JE哥
* @email 1272434821@qq.com
* @description: 枚举单例类,保证SessionFactory是唯一的
*/
public enum HibernateUtils { INSTANCE; // 保证SessionFactory在当前应用程序里面只有一个实例
private SessionFactory sessionFactory; private HibernateUtils() {
try {
// 实例化配置对象
Configuration configuration = new Configuration();
// 加载classpath路径下面的默认配置文件hibernate.cfg.xml
configuration.configure();
// Hibernate4之后,Configuration类中,原来获取SessionFactory的方法buildSessionFactory()已经被标记为过时
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
// 官方建议使用buildSessionFactory(ServiceRegistry)这个方法来获取SessionFactory
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (Exception e) {
// 显示堆栈异常,便于排除
e.printStackTrace();
throw new LogicExecption("解析配置文件或映射文件出现异常了:" + e.getMessage());
}
} public Session getSession() {
return sessionFactory.openSession();
}
}

异常简单处理类

package com.jege.hibernate.execption;

/**
* @author JE哥
* @email 1272434821@qq.com
* @description:自定义异常处理类
*/
public class LogicExecption extends RuntimeException {
public LogicExecption(String message) {
super(message);
}
}

源码地址

https://github.com/je-ge/hibernate

如果觉得我的文章对您有帮助,请予以打赏。您的支持将鼓励我继续创作!谢谢!

Hibernate 系列教程1-枚举单例类

Hibernate 系列教程1-枚举单例类