HibernateUtil的编写,主要是建立数据库的连接

package com.yh.entity;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    // 初始化一个ThreadLocal对象
    private static final ThreadLocal<Session> sessionTL = new ThreadLocal<Session>(); // 1
    private static Configuration configuration;
    private final static SessionFactory sessionFactory;
    static {
        try {
            configuration = new Configuration().configure();
            sessionFactory = configuration.buildSessionFactory();
        } catch (Throwable ex) {
            ex.printStackTrace();
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static Session currentSession() {
        //sessionTL的get()方法根据当前线程返回其对应的线程内部变量,
        //也就是我们需要的Session,多线程情况下共享数据库链接是不安全的。
        //ThreadLocal保证了每个线程都有自己的Session。
        Session session = (Session) sessionTL.get(); // 2
        // 如果session为null,则打开一个新的session
        if (session == null) { // 3
            //创建一个数据库连接对象session。
            session = sessionFactory.openSession(); // 4
            // 保存该数据库连接session到ThreadLocal中。
            sessionTL.set(session); // 5
        }
        //如果当前线程已经访问过数据库了,
        //则从sessionTL中get()就可以获取该线程上次获取过的数据库连接对象。
        return session; // 6
    }
    public static void closeSession(){
        Session session = (Session) sessionTL.get(); // 2
        sessionTL.set(null);
        if(session!=null)
            session.close();
    }

}

建立与数据库的连接,打开session,和关闭session,每次用时可以直接使用

时间: 2024-08-27 21:43:20

HibernateUtil的编写,主要是建立数据库的连接的相关文章

[Spring Data MongoDB]学习笔记--建立数据库的连接

1. 有了上一篇的Mongo后,连接数据库我们还需要更多的信息,比如数据库名字,用户名和密码等. 我们可以继续来配置MongoDbFactory的实例. public interface MongoDbFactory { DB getDb() throws DataAccessException; DB getDb(String dbName) throws DataAccessException; } 然后我们可以继续用MongoDbFactory来创建MongoTemplate的实例. pu

使用MySQL Workbench建立数据库,建立新的表,向表中添加数据

初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MySQL Workbench建立数据库,建立新的表,为表添加数据. 点击上图中的“加号”图标,新建一个连接, 如上图,先输入数据库的账号密码,帐号默认为root,填好密码后 点击“OK”,连接就建立好了,建立完成后,会出现一个长方形的框框,双击它,出现下图所示页面 点击图中的红圈里的按钮,新建一个Schema,即数据库(个人理解..),修改一下Name 的值,如  mydat

[Django]中建立数据库视图

Django中建立数据库视图 Django中没有建立视图的接口,如果要建立一个视图需要一些手动的改变. 这里使用的Django 版本>1.5, 使用的数据库为mysql 第一步 建立视图,例如视图的名称叫做 user_info 第二步 model中这么写: class MyModel(models.Model): ... class Meta: managed = False db_table = "user_info" 这样就可以把视图经过orm变成对象了. REF: crea

翻译brent ozar的sqlserver dba训练课程——第一章:建立数据库服务器清单

在公司里,走进销售副总裁的办公室,询问他手下有多少销售人员.不,我的意思是你并不要那么做,他们会问你销售工具为什么那么慢. 其实我的意思是,如果你能走进他的办公室问他这个问题.我敢打赌,他会马上回答,不会有片刻犹豫.或者你走进ceo的办公室问他有多少员工,或者问cfo年度预算是多少,他们肯定会迅速回答. 因此,我的观点是,当你负责某个事物时,你需要清楚的知道你所负责的是那些. 制作一个表格清单 让我们开始制作一个表格清单.在表格的顶部,我们列出以下列: sqlserver版本(2005.2008

用C3P0建立服务器与数据库的连接

1:在MyEclipse建立 Web Service Project 2:在工程中建立servlets包 3:在包中新建Servlet文件(采用new Servlet方法可省去配置web.xml步骤) 4:在工程的WebRoot / WEB_INF / lib 目录下导入c3p0.jar和mysql-connector.jar包,并build path 5:在工程src目录下新建c3p0-config.cml文件 6:在servlet中实例化连接  DataSource dataSource =

建立数据库

因为用户登录需要验证身份信息,所以提出建立数据库,用于存储用户身份信息及图书信息.我们使用sql server来建立数据库. 首先建立数据库book: 包含两张表member和bookinfo分别记录用户信息和图书信息 member表的建立为用户提供身份验证:bookinfo表的建立提供图书信息. 我们使用JSP和JSqlServer来构建一个网上书店.主要代码可以分成两大部分:第一部分是普通程序,用于客户在网上选购图书,第二部分是管理程序,用于在服务器端处理客户的定单.

【Web API系列教程】3.3 — 实战:处理数据(建立数据库)

前言 在本部分中,你将在EF上使用Code First Migration(http://msdn.microsoft.com/en-us/data/jj591621)来用测试数据建立数据库. 在Tools目录下选择Library Package Manager,然后选择Package Manager Console.在包管理控制台窗口,输入以下命令: Enable-Migrations 这条命令会添加一个名为Migrations的文件夹到你的项目,并添加一个名为Configuration.cs

跟我一起学extjs5(28--加入模块和菜单定义[1建立数据库和表])

跟我一起学extjs5(28--加入模块和菜单定义[1建立数据库和表]) 下面我们开始进入自定义系统的设计和各个组成部分的搭建工作. 首先在sql server中建立数据库,这里的数据的名字我定义为extjs5,然后需要建立模块的定义表,这个表里将存着系统中所有模块的定义信息.为了能有个直观的前后台的互动,先把模块和菜单这二个部分加进去,可以把菜单数据组织好后发送到前台去进行展示. 由于系统中的模块很多,需要分类,因此在先要设计一个"模块分组"的表,对于菜单也是一样,需要有一个&quo

使用SQL语句建立数据库

使用SQL语句建立数据库 创建一个数据库有三个名称,第一个是Create后面的数据库名称,第二个是Name的逻辑名称,第三个是Filename的物理名称. A. 创建未指定文件的数据库 Create Database TestDB --TestDB 数据库名称--DBMS里用的是这个名 B. 创建指定数据和事务日志文件的数据库 Create Database TestDB --TestDB 数据库名称--DBMS里用的是这个名 On --On 代表数据文件组( --主要数据文件Name ='Te