zoukankan      html  css  js  c++  java
  • Hibernate 系列教程1-枚举单例类

    你还在为不知道怎样正确使用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

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

  • 相关阅读:
    xml配置文件使用-读取、转换
    .NET 4.0 缓存
    jQuery分页插件pagination.js 笔记
    Spring源码
    Shell编程(字符串篇)
    Linux DNS 相关
    Shell将命令执行结果写入文件
    Linux安装GCC
    Linux网络安全
    产品经理基础
  • 原文地址:https://www.cnblogs.com/je-ge/p/6105434.html
Copyright © 2011-2022 走看看