MySessionFactory
- package com.ORM;
- import org.hibernate.HibernateException;
- import org.hibernate.Session;
- import org.hibernate.cfg.Configuration;
- /**
- * Configures and provides access to Hibernate sessions, tied to the
- * current thread of execution. Follows the Thread Local Session
- * pattern, see {@link http://hibernate.org/42.html }.
- */
- public class MySessionFactory {
- /**
- * Location of hibernate.cfg.xml file.
- * Location should be on the classpath as Hibernate uses
- * #resourceAsStream style lookup for its configuration file.
- * The default classpath location of the hibernate config file is
- * in the default package. Use #setConfigFile() to update
- * the location of the configuration file for the current session.
- */
- private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
- private static final ThreadLocal threadLocal = new ThreadLocal();
- private static Configuration configuration = new Configuration();
- private static org.hibernate.SessionFactory sessionFactory;
- private static String configFile = CONFIG_FILE_LOCATION;
- static {
- try {
- configuration.configure(configFile);
- sessionFactory = configuration.buildSessionFactory();
- } catch (Exception e) {
- System.err
- .println("%%%% Error Creating SessionFactory %%%%");
- e.printStackTrace();
- }
- }
- private MySessionFactory() {
- }
- /**
- * Returns the ThreadLocal Session instance. Lazy initialize
- * the <code>SessionFactory</code> if needed.
- *
- * @return Session
- * @throws HibernateException
- */
- public static Session getSession() 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;
- }
- /**
- * Rebuild hibernate session factory
- *
- */
- public static void rebuildSessionFactory() {
- try {
- configuration.configure(configFile);
- sessionFactory = configuration.buildSessionFactory();
- } catch (Exception e) {
- System.err
- .println("%%%% Error Creating SessionFactory %%%%");
- e.printStackTrace();
- }
- }
- /**
- * Close the single hibernate session instance.
- *
- * @throws HibernateException
- */
- public static void closeSession() throws HibernateException {
- Session session = (Session) threadLocal.get();
- threadLocal.set(null);
- if (session != null) {
- session.close();
- }
- }
- /**
- * return session factory
- *
- */
- public static org.hibernate.SessionFactory getSessionFactory() {
- return sessionFactory;
- }
- /**
- * return session factory
- *
- * session factory will be rebuilded in the next call
- */
- public static void setConfigFile(String configFile) {
- MySessionFactory.configFile = configFile;
- sessionFactory = null;
- }
- /**
- * return hibernate configuration
- *
- */
- public static Configuration getConfiguration() {
- return configuration;
- }
- }
- package com.service;
- import java.util.List;
- import com.ORM.*;
- import com.base.*;
- import org.hibernate.*;
- /** 系统用户管理接口实现 */
- public class AdminServiceImpl extends BaseLog implements AdminService {
- /** 系统管理员登录 */
- public Admin adminLogin(String loginName, String loginPwd) throws Exception {
- Session session = MySessionFactory.getSession();
- Transaction tx = null;
- Admin admin = null;
- try{
- String hql = "select a from Admin as a where a.loginName=:loginName and a.loginPwd=:loginPwd";
- Query query = session.createQuery(hql);
- query.setString("loginName", loginName);
- query.setString("loginPwd", loginPwd);
- query.setMaxResults(1);
- tx = session.beginTransaction();
- admin = (Admin)query.uniqueResult();
- tx.commit();
- }catch(Exception ex){
- if(tx!=null)tx.rollback();
- logger.info("在执行AdminServiceImpl类中的adminLogin方法时出错:\n");
- ex.printStackTrace();
- }finally{
- MySessionFactory.closeSession();
- }
- return admin;
- }
- /** 新增管理员 */
- public boolean addAdmin(Admin admin) throws Exception {
- Session session = MySessionFactory.getSession();
- Transaction tx = null;
- boolean status = false;
- try{
- tx = session.beginTransaction();
- session.save(admin);
- tx.commit();
- status = true;
- }catch(Exception ex){
- if(tx!=null)tx.rollback();
- logger.info("在执行AdminServiceImpl类中的addAdmin方法时出错:\n");
- ex.printStackTrace();
- }finally{
- MySessionFactory.closeSession();
- }
- return status;
- }
- /** 浏览管理员 */
- public List browseAdmin() throws Exception {
- Session session = MySessionFactory.getSession();
- Transaction tx = null;
- List list = null;
- try{
- Query query = session.createQuery("from Admin as a order by a.id");
- tx = session.beginTransaction();
- list = query.list();
- tx.commit();
- if (!Hibernate.isInitialized(list))Hibernate.initialize(list);
- }catch(Exception ex){
- if(tx!=null)tx.rollback();
- logger.info("在执行AdminServiceImpl类中的browseAdmin方法时出错:\n");
- ex.printStackTrace();
- }finally{
- MySessionFactory.closeSession();
- }
- return list;
- }
- /** 删除指定的管理员 */
- public boolean delAdmin(Integer id) throws Exception {
- Session session = MySessionFactory.getSession();
- Transaction tx = null;
- boolean status = false;
- try{
- tx = session.beginTransaction();
- Admin admin = (Admin)session.load(Admin.class, id);
- session.delete(admin);
- tx.commit();
- status = true;
- }catch(Exception ex){
- if(tx!=null)tx.rollback();
- logger.info("在执行AdminServiceImpl类中的delAdmin方法时出错:\n");
- ex.printStackTrace();
- }finally{
- MySessionFactory.closeSession();
- }
- return status;
- }
- /** 装载指定的管理员 */
- public Admin loadAdmin(Integer id) throws Exception {
- Session session = MySessionFactory.getSession();
- Transaction tx = null;
- Admin admin = null;
- try{
- tx = session.beginTransaction();
- admin = (Admin)session.get(Admin.class, id);
- tx.commit();
- }catch(Exception ex){
- if(tx!=null)tx.rollback();
- logger.info("在执行AdminServiceImpl类中的loadAdmin方法时出错:\n");
- ex.printStackTrace();
- }finally{
- MySessionFactory.closeSession();
- }
- return admin;
- }
- /** 更新管理员 */
- public boolean updateAdmin(Admin admin) throws Exception {
- Session session = MySessionFactory.getSession();
- Transaction tx = null;
- boolean status = false;
- try{
- tx = session.beginTransaction();
- session.update(admin);
- tx.commit();
- status = true;
- }catch(Exception ex){
- if(tx!=null)tx.rollback();
- logger.info("在执行AdminServiceImpl类中的updateAdmin方法时出错:\n");
- ex.printStackTrace();
- }finally{
- MySessionFactory.closeSession();
- }
- return status;
- }
- }
MySessionFactory的更多相关文章
- 深入浅出Struts2+Spring+Hibernate框架
一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司 ...
- spring声明式事务管理总结
事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> <bean id="transactionM ...
- Hibernate(二)__简单实例入门
首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...
- SSH框架使用注解简化代码
注释的优势: 1.最简单直接的优势就是减少了配置文件的代码量. 2.注释和Java代码位于一个文件中,而XML 配置采用独立的配置文件.配置信息和 Java 代码放在一起,有助于增强程序的内聚性.而采 ...
- SSH(Struts2+Spring4+HIbernate5)的简化
今天给大家带来的是一个简单的新闻发布系统 首先在学习过程中我是深有体会,做事情不要浮躁,不要想着一口吃下一个胖子, 最最重要的是理解,理解透了学什么东西都是随心所欲的. 开发环境:win10系统 jd ...
- 浅谈Hibernate入门
前言 最近打算做一个自己的个人网站,经过仔细思考,打算使用hibernate作为开发的ORM框架,因此各种找资料,由于本人是刚刚接触这技术的,所以就找了比较基础的知识来分享下 基本概述 Hiberna ...
- 新手SSH基础框架搭建
SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 首先我们先了解SSH的框架所需的包和基本概念: 一.下面我们先来了解一下strut ...
- Spring声明事务管理
首先我们先了解事务,什么是事务? 简单来说就是要么全部成功,要么什么都不做. 为什么要使用事务? 比如说常用银行系统的例子,如果没有用事务,有人在存入钱的时候出了问题,那么银行系统数据库的数据没有改变 ...
- java必备基础知识点
Java基础 1. 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等 2. 简单写出 ...
随机推荐
- Spring初学之bean之间的关系和bean的作用域
一.bean之间的关系 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...
- poj 2115 C Looooops 扩展欧几里德
C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 23616 Accepted: 6517 Descr ...
- 微信开放接口获取用户昵称保存到MySQL中为空白
微信昵称中包含emoji表情标签,某些标签是使用了4字节编码的UTF8. 而大多数MySQL数据库现在使用的是3字节UTF8编码,这样会导致保存为空,且不会提示失败. 解决方法有2个,一个是升级到My ...
- C#中List<object>.Clear()方法和实例化new List<object>()操作的结果分析
本文主要的目的是想简单的探讨一下C#中List针对内存的操作过程,以便以后遇到该种情况可以避免走进误区,内容非常简单,只是在此作为记录.能帮到人最好,帮不到就当给自己提个醒.C#将复杂的指针操作全都隐 ...
- C语言基础一
C语言学习 C语言的特点 语言简单.紧凑.使用方便.灵活 运算符丰富 数据类型丰富 具有结构化的控制语句 语法限制不太严格,程序设计自由度大 C语言允许直接访问物理地址,可以对硬件进行直接操作 生成代 ...
- 将一个jar包放到linux下定时执行
将一个jar包放到linux下定时执行 1.在dbtodb文件夹下新建一个dbtodb.sh,脚本内容为: #!/bin/bash cd /usr/dbtodb/ java -jar dbtodb.j ...
- javascript ArrayBuffer类型化数组和视图的操作
个人理解类型化数据就是内存分配区域,不同数据的存储就是视图DataView咯 var buffers = []; var json = {"id":100, "name& ...
- ionic3 教程(一)安装和配置
// 安装(失败的话 Mac 尝试使用 sudo,Windows 尝试管理员身份运行 cmd) $ npm install -g cordova ionic // 安装后可以验证一下 ionic cl ...
- 分布式事务_01_2PC框架raincat快速体验
一.前言 关于2PC的理论知识请见:分布式_理论_03_2PC 这一节我们来看下github上一个优秀的2PC分布式事务开源框架的快速体验. 二.源码 源码请见: https://github.com ...
- winform常用方法
1.对象的初始化器: Class a = new Class() { id = , name = "张三" } 2.窗体间传值 ①构造函数 ②单例函数 //单例模式:确 ...