1. package com.ORM;
  2.  
  3. import org.hibernate.HibernateException;
  4. import org.hibernate.Session;
  5. import org.hibernate.cfg.Configuration;
  6.  
  7. /**
  8. * Configures and provides access to Hibernate sessions, tied to the
  9. * current thread of execution. Follows the Thread Local Session
  10. * pattern, see {@link http://hibernate.org/42.html }.
  11. */
  12. public class MySessionFactory {
  13.  
  14. /**
  15. * Location of hibernate.cfg.xml file.
  16. * Location should be on the classpath as Hibernate uses
  17. * #resourceAsStream style lookup for its configuration file.
  18. * The default classpath location of the hibernate config file is
  19. * in the default package. Use #setConfigFile() to update
  20. * the location of the configuration file for the current session.
  21. */
  22. private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
  23. private static final ThreadLocal threadLocal = new ThreadLocal();
  24. private static Configuration configuration = new Configuration();
  25. private static org.hibernate.SessionFactory sessionFactory;
  26. private static String configFile = CONFIG_FILE_LOCATION;
  27.  
  28. static {
  29. try {
  30. configuration.configure(configFile);
  31. sessionFactory = configuration.buildSessionFactory();
  32. } catch (Exception e) {
  33. System.err
  34. .println("%%%% Error Creating SessionFactory %%%%");
  35. e.printStackTrace();
  36. }
  37. }
  38. private MySessionFactory() {
  39. }
  40.  
  41. /**
  42. * Returns the ThreadLocal Session instance. Lazy initialize
  43. * the <code>SessionFactory</code> if needed.
  44. *
  45. * @return Session
  46. * @throws HibernateException
  47. */
  48. public static Session getSession() throws HibernateException {
  49. Session session = (Session) threadLocal.get();
  50.  
  51. if (session == null || !session.isOpen()) {
  52. if (sessionFactory == null) {
  53. rebuildSessionFactory();
  54. }
  55. session = (sessionFactory != null) ? sessionFactory.openSession()
  56. : null;
  57. threadLocal.set(session);
  58. }
  59.  
  60. return session;
  61. }
  62.  
  63. /**
  64. * Rebuild hibernate session factory
  65. *
  66. */
  67. public static void rebuildSessionFactory() {
  68. try {
  69. configuration.configure(configFile);
  70. sessionFactory = configuration.buildSessionFactory();
  71. } catch (Exception e) {
  72. System.err
  73. .println("%%%% Error Creating SessionFactory %%%%");
  74. e.printStackTrace();
  75. }
  76. }
  77.  
  78. /**
  79. * Close the single hibernate session instance.
  80. *
  81. * @throws HibernateException
  82. */
  83. public static void closeSession() throws HibernateException {
  84. Session session = (Session) threadLocal.get();
  85. threadLocal.set(null);
  86.  
  87. if (session != null) {
  88. session.close();
  89. }
  90. }
  91.  
  92. /**
  93. * return session factory
  94. *
  95. */
  96. public static org.hibernate.SessionFactory getSessionFactory() {
  97. return sessionFactory;
  98. }
  99.  
  100. /**
  101. * return session factory
  102. *
  103. * session factory will be rebuilded in the next call
  104. */
  105. public static void setConfigFile(String configFile) {
  106. MySessionFactory.configFile = configFile;
  107. sessionFactory = null;
  108. }
  109.  
  110. /**
  111. * return hibernate configuration
  112. *
  113. */
  114. public static Configuration getConfiguration() {
  115. return configuration;
  116. }
  117.  
  118. }
  1. package com.service;
  2.  
  3. import java.util.List;
  4.  
  5. import com.ORM.*;
  6. import com.base.*;
  7. import org.hibernate.*;
  8.  
  9. /** 系统用户管理接口实现 */
  10. public class AdminServiceImpl extends BaseLog implements AdminService {
  11.  
  12. /** 系统管理员登录 */
  13. public Admin adminLogin(String loginName, String loginPwd) throws Exception {
  14. Session session = MySessionFactory.getSession();
  15. Transaction tx = null;
  16. Admin admin = null;
  17. try{
  18. String hql = "select a from Admin as a where a.loginName=:loginName and a.loginPwd=:loginPwd";
  19. Query query = session.createQuery(hql);
  20. query.setString("loginName", loginName);
  21. query.setString("loginPwd", loginPwd);
  22. query.setMaxResults(1);
  23. tx = session.beginTransaction();
  24. admin = (Admin)query.uniqueResult();
  25. tx.commit();
  26. }catch(Exception ex){
  27. if(tx!=null)tx.rollback();
  28. logger.info("在执行AdminServiceImpl类中的adminLogin方法时出错:\n");
  29. ex.printStackTrace();
  30. }finally{
  31. MySessionFactory.closeSession();
  32. }
  33. return admin;
  34. }
  35.  
  36. /** 新增管理员 */
  37. public boolean addAdmin(Admin admin) throws Exception {
  38. Session session = MySessionFactory.getSession();
  39. Transaction tx = null;
  40. boolean status = false;
  41. try{
  42. tx = session.beginTransaction();
  43. session.save(admin);
  44. tx.commit();
  45. status = true;
  46. }catch(Exception ex){
  47. if(tx!=null)tx.rollback();
  48. logger.info("在执行AdminServiceImpl类中的addAdmin方法时出错:\n");
  49. ex.printStackTrace();
  50. }finally{
  51. MySessionFactory.closeSession();
  52. }
  53. return status;
  54. }
  55.  
  56. /** 浏览管理员 */
  57. public List browseAdmin() throws Exception {
  58. Session session = MySessionFactory.getSession();
  59. Transaction tx = null;
  60. List list = null;
  61. try{
  62. Query query = session.createQuery("from Admin as a order by a.id");
  63. tx = session.beginTransaction();
  64. list = query.list();
  65. tx.commit();
  66. if (!Hibernate.isInitialized(list))Hibernate.initialize(list);
  67. }catch(Exception ex){
  68. if(tx!=null)tx.rollback();
  69. logger.info("在执行AdminServiceImpl类中的browseAdmin方法时出错:\n");
  70. ex.printStackTrace();
  71. }finally{
  72. MySessionFactory.closeSession();
  73. }
  74. return list;
  75. }
  76.  
  77. /** 删除指定的管理员 */
  78. public boolean delAdmin(Integer id) throws Exception {
  79. Session session = MySessionFactory.getSession();
  80. Transaction tx = null;
  81. boolean status = false;
  82. try{
  83. tx = session.beginTransaction();
  84. Admin admin = (Admin)session.load(Admin.class, id);
  85. session.delete(admin);
  86. tx.commit();
  87. status = true;
  88. }catch(Exception ex){
  89. if(tx!=null)tx.rollback();
  90. logger.info("在执行AdminServiceImpl类中的delAdmin方法时出错:\n");
  91. ex.printStackTrace();
  92. }finally{
  93. MySessionFactory.closeSession();
  94. }
  95. return status;
  96. }
  97.  
  98. /** 装载指定的管理员 */
  99. public Admin loadAdmin(Integer id) throws Exception {
  100. Session session = MySessionFactory.getSession();
  101. Transaction tx = null;
  102. Admin admin = null;
  103. try{
  104. tx = session.beginTransaction();
  105. admin = (Admin)session.get(Admin.class, id);
  106. tx.commit();
  107. }catch(Exception ex){
  108. if(tx!=null)tx.rollback();
  109. logger.info("在执行AdminServiceImpl类中的loadAdmin方法时出错:\n");
  110. ex.printStackTrace();
  111. }finally{
  112. MySessionFactory.closeSession();
  113. }
  114. return admin;
  115. }
  116.  
  117. /** 更新管理员 */
  118. public boolean updateAdmin(Admin admin) throws Exception {
  119. Session session = MySessionFactory.getSession();
  120. Transaction tx = null;
  121. boolean status = false;
  122. try{
  123. tx = session.beginTransaction();
  124. session.update(admin);
  125. tx.commit();
  126. status = true;
  127. }catch(Exception ex){
  128. if(tx!=null)tx.rollback();
  129. logger.info("在执行AdminServiceImpl类中的updateAdmin方法时出错:\n");
  130. ex.printStackTrace();
  131. }finally{
  132. MySessionFactory.closeSession();
  133. }
  134. return status;
  135. }
  136. }

MySessionFactory的更多相关文章

  1. 深入浅出Struts2+Spring+Hibernate框架

    一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司 ...

  2. spring声明式事务管理总结

    事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> <bean id="transactionM ...

  3. Hibernate(二)__简单实例入门

    首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...

  4. SSH框架使用注解简化代码

    注释的优势: 1.最简单直接的优势就是减少了配置文件的代码量. 2.注释和Java代码位于一个文件中,而XML 配置采用独立的配置文件.配置信息和 Java 代码放在一起,有助于增强程序的内聚性.而采 ...

  5. SSH(Struts2+Spring4+HIbernate5)的简化

    今天给大家带来的是一个简单的新闻发布系统 首先在学习过程中我是深有体会,做事情不要浮躁,不要想着一口吃下一个胖子, 最最重要的是理解,理解透了学什么东西都是随心所欲的. 开发环境:win10系统 jd ...

  6. 浅谈Hibernate入门

    前言 最近打算做一个自己的个人网站,经过仔细思考,打算使用hibernate作为开发的ORM框架,因此各种找资料,由于本人是刚刚接触这技术的,所以就找了比较基础的知识来分享下 基本概述 Hiberna ...

  7. 新手SSH基础框架搭建

    SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 首先我们先了解SSH的框架所需的包和基本概念: 一.下面我们先来了解一下strut ...

  8. Spring声明事务管理

    首先我们先了解事务,什么是事务? 简单来说就是要么全部成功,要么什么都不做. 为什么要使用事务? 比如说常用银行系统的例子,如果没有用事务,有人在存入钱的时候出了问题,那么银行系统数据库的数据没有改变 ...

  9. java必备基础知识点

    Java基础 1. 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等 2. 简单写出 ...

随机推荐

  1. Spring初学之bean之间的关系和bean的作用域

    一.bean之间的关系 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...

  2. poj 2115 C Looooops 扩展欧几里德

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23616   Accepted: 6517 Descr ...

  3. 微信开放接口获取用户昵称保存到MySQL中为空白

    微信昵称中包含emoji表情标签,某些标签是使用了4字节编码的UTF8. 而大多数MySQL数据库现在使用的是3字节UTF8编码,这样会导致保存为空,且不会提示失败. 解决方法有2个,一个是升级到My ...

  4. C#中List<object>.Clear()方法和实例化new List<object>()操作的结果分析

    本文主要的目的是想简单的探讨一下C#中List针对内存的操作过程,以便以后遇到该种情况可以避免走进误区,内容非常简单,只是在此作为记录.能帮到人最好,帮不到就当给自己提个醒.C#将复杂的指针操作全都隐 ...

  5. C语言基础一

    C语言学习 C语言的特点 语言简单.紧凑.使用方便.灵活 运算符丰富 数据类型丰富 具有结构化的控制语句 语法限制不太严格,程序设计自由度大 C语言允许直接访问物理地址,可以对硬件进行直接操作 生成代 ...

  6. 将一个jar包放到linux下定时执行

    将一个jar包放到linux下定时执行 1.在dbtodb文件夹下新建一个dbtodb.sh,脚本内容为: #!/bin/bash cd /usr/dbtodb/ java -jar dbtodb.j ...

  7. javascript ArrayBuffer类型化数组和视图的操作

    个人理解类型化数据就是内存分配区域,不同数据的存储就是视图DataView咯 var buffers = []; var json = {"id":100, "name& ...

  8. ionic3 教程(一)安装和配置

    // 安装(失败的话 Mac 尝试使用 sudo,Windows 尝试管理员身份运行 cmd) $ npm install -g cordova ionic // 安装后可以验证一下 ionic cl ...

  9. 分布式事务_01_2PC框架raincat快速体验

    一.前言 关于2PC的理论知识请见:分布式_理论_03_2PC 这一节我们来看下github上一个优秀的2PC分布式事务开源框架的快速体验. 二.源码 源码请见: https://github.com ...

  10. winform常用方法

    1.对象的初始化器: Class a = new Class() { id = , name = "张三" } 2.窗体间传值    ①构造函数    ②单例函数 //单例模式:确 ...