你还在为不知道怎样正确使用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-枚举单例类的更多相关文章

  1. 《Effective Java》 读书笔记(三) 使用私有构造方法或枚举实现单例类

    1.单例类到现在为止算是比较熟悉的一种设计模式了,最开始写单例模式是在C#里面,想要自己实现一个单例类,代码如下: public class Instance { private static rea ...

  2. 如何防止JAVA反射对单例类的攻击?

    在我的上篇随笔中,我们知道了创建单例类有以下几种方式: (1).饿汉式; (2).懒汉式(.加同步锁的懒汉式.加双重校验锁的懒汉式.防止指令重排优化的懒汉式); (3).登记式单例模式; (4).静态 ...

  3. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  4. 游戏设计模式——C++单例类

    前言: 本文将探讨单例类设计模式,单例类的懒汉模式/饿汉模式,单例类的多线程安全性,最后将利用C++模板减少单例类代码量. 本文假设有一个Manager管理类,并以此为探究单例类的设计模式. 懒汉模式 ...

  5. java单例类/

    java单例类  一个类只能创建一个实例,那么这个类就是一个单例类 可以重写toString方法 输出想要输出的内容 可以重写equcal来比较想要比较的内容是否相等 对于final修饰的成员变量 一 ...

  6. iOS中编写单例类的心得

    单例 1.认识过的单例类有哪些: NSUserDefaults.NSNotificationCenter.NSFileManager.UIApplication 2.单例类 单例类某个类在代码编写时使 ...

  7. 设计模式(java) 单例模式 单例类

    ·单例类 单实例类,就是这个类只能创建一个对象,保证了对象实例的唯一性. 1.单例模式( Singleton Pattern) 是一个比较简单的模式, 其定义如下:Ensure a class has ...

  8. [转]单例模式——C++实现自动释放单例类的实例

    [转]单例模式——C++实现自动释放单例类的实例 http://www.cnblogs.com/wxxweb/archive/2011/04/15/2017088.html http://blog.s ...

  9. iOS - OC SingleClass 单例类

    前言 单例对象能够被整个程序所操作.对于一个单例类,无论初始化单例对象多少次,也只能有一个单例对象存在,并且该对象是全局的,能够被整个系统访问到. 特点: 在内存中只有一个实例 提供一个全局的访问点 ...

随机推荐

  1. Java 序列化 transient关键字

    Java 序列化 transient关键字 @author 敏敏Alexia 转自:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html 1. tra ...

  2. openwrt设置语言的过程

    设置语言的流程一.关联的配置文件/etc/config/luci查看配置文件内容如下:root@hbg:/# cat /etc/config/luci config core 'main'       ...

  3. HDU 1361 Parencodings(栈)

    题目链接 Problem Description Let S = s1 s2 … s2n be a well-formed string of parentheses. S can be encode ...

  4. Crowd安装和破解

    参考资料来自:http://www.it165.net/os/html/201311/6653.html 这个破解比较简单

  5. CSS的属性

    一,可继承属性<!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...

  6. fs模块主要功能小解

    打开文件: fs.open(path, flags[, mode], callback) path: 要打开的文件的路径 flags: 文件打开的行为 解析: r 读取 w 写入并删除原内容 + r+ ...

  7. spring中JdbcTemplate的使用

    一.首先JdbcTemplate有一个DataSource类型的属性,所以需要在spring的配置文件中为JdbcTemplate的实例配置dataSource属性: <!-- 导入资源文件 - ...

  8. 《Windows驱动开发技术详解》之读写操作

    缓冲区方式读写操作 设置缓冲区读写方式:

  9. javascript中的throttle和debounce

    throttle 我们这里说的throttle就是函数节流的意思.再说的通俗一点就是函数调用的频度控制器,是连续执行时间间隔控制.主要应用的场景比如: 1.鼠标移动,mousemove 事件2.DOM ...

  10. 深入浅出requireJS-1

    我们都知道,虽然我们可以通过原型和继承来使javascript面向对象.但是,当js代码和逻辑过多时,代码的维护和扩展会变的很不方便.这时,nodejs做的非常好,但是在浏览器端模块化的js编程一直都 ...