`

Hibernate学习之一-------数据库连接的模板类

阅读更多

用myeclipse生成的一个产生数据库连接的模板类,很经典,值得学习:

package com.zhsh.hibernate.util;

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 HibernateSessionFactory {

    /** 
     * 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<Session> threadLocal = new ThreadLocal<Session>();
    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 HibernateSessionFactory() {
    }
	
	/**
     * 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) {//可以自己指定配置文件
		HibernateSessionFactory.configFile = configFile;
		sessionFactory = null;
	}

	/**
     *  return hibernate configuration
     *
     */
	public static Configuration getConfiguration() {
		return configuration;
	}

}

 

分享到:
评论

相关推荐

    hibernate-release-4.1.4

    5. **配置文件**:可能有默认的配置模板,展示如何配置Hibernate以连接数据库。 6. **许可证文件**:关于软件的授权信息,通常遵循Apache License 2.0等开源协议。 总之,"hibernate-release-4.1.4"这个压缩包是...

    struts2-hibernate3.3-Oracle-无冲突

    在Java开发中,Hibernate通常会通过JDBC驱动来连接Oracle数据库,因此在Struts2和Hibernate的集成中,还需要正确配置数据库连接参数,如URL、用户名和密码,以及数据源等。 这个"struts2-hibernate3.3-Oracle-...

    hibernate-distribution

    1. **配置Hibernate**:包括设置hibernate.cfg.xml文件,配置数据库连接信息,以及实体类的映射文件。 2. **创建SessionFactory**:基于配置文件创建SessionFactory实例,它是线程不安全的,一般在应用启动时创建。...

    spring+hibernate和spring+myBatis实现连接多个数据库,同时操作的项目

    在Spring中,我们可以配置多个DataSource bean,每个bean对应一个数据库连接。Spring的AbstractRoutingDataSource类可以用来实现动态数据源切换,它可以根据一定的规则(如事务上下文、请求参数等)选择使用哪个数据...

    hibernate学习笔记,学习大纲【吐血推荐】

    **Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。本笔记将深入...

    连接数据库模板 java必备

    为了提高代码的可重用性和减少重复,我们可以创建一个数据库连接模板类,封装上述步骤。这个模板类可以包含静态方法,接收数据库配置参数,然后返回一个连接对象。这样,在需要使用数据库的地方,只需调用模板类的...

    hibernate模板项目

    1. 配置文件:`hibernate.cfg.xml`,用于设置数据库连接信息、Hibernate配置参数等。 2. 实体类:每个实体类对应数据库中的一张表,使用注解进行字段映射。 3. DAO(Data Access Object)层:包含处理数据库操作的...

    Hibernate 显示数据库数据

    2. Hibernate配置:在项目中,首先需要配置Hibernate的`hibernate.cfg.xml`文件,包括数据库连接信息(如URL、用户名、密码)、JDBC驱动、方言等。 3. 实体类:实体类代表数据库中的表,每个属性对应表的一列。例如...

    hibernate-tool 插件

    而`hibernate-tools`插件是Hibernate项目的一部分,它提供了一系列实用工具,帮助开发者更加便捷地进行数据库交互和对象模型的维护。本文将详细介绍`hibernate-tools`插件的功能、使用方法以及如何实现映射文件的...

    Hibernate-tools解决hbm.xml中文注释乱码和生成实体类注释

    然后,创建一个配置文件(如`hibernatetool.properties`),设置数据库连接信息、实体类输出目录、模板文件等。接着,通过命令行或者集成到构建工具(如Maven或Gradle)中运行`Hibernate-tools`,执行反编译数据库...

    hibernate-jpamodelgen-1.1.0.Final-dist.tar.gz

    在Java开发领域,尤其是涉及到数据库操作时,JPA提供了一种标准的方式来映射数据库表到Java对象,而Hibernate作为JPA的实现之一,提供了丰富的功能和高性能的持久化服务。而Hibernate JPA Model Generator则是这个...

    jsp连Sql_server数据库模板

    总结来说,"jsp连Sql_server数据库模板"是一个帮助开发者快速实现JSP与SQL Server数据库连接的工具,它可能包含了JDBC驱动、连接配置、数据库操作的模板代码,以及必要的异常处理机制。掌握这些知识点对于开发基于...

    hibernate-spring-struts整合手册

    - 配置Hibernate以连接数据库,同时设置Spring中的事务管理策略,确保数据操作的原子性和一致性。 **3. 载入Spring的applicationContext.xml** - 配置Spring的依赖注入,通过XML文件定义bean及其依赖关系,便于...

    hibernate 数据库操作方法

    创建Hibernate模板类,如`HibernateTemplate`,或者使用Spring Data JPA的Repository接口,实现数据访问逻辑。 5. 配置服务层: 将DAO注入到Service中,然后在Service方法上添加@Transactional注解,启用事务管理...

    Hibernate-CRUD自用基础模板

    - `hibernate.cfg.xml`:这是Hibernate的配置文件,包含数据库连接信息、方言设置、缓存配置等。 - `实体类`:如`User.java`,代表数据库中的表,通常使用JavaBean模式,通过注解或XML映射到数据库表。 - `...

    Hibernate入门学习

    本文介绍了如何在MyEclipse环境中搭建Hibernate开发环境,包括创建工程项目、配置数据库连接、添加Hibernate支持以及自动生成实体类的过程。通过本文的学习,初学者可以快速掌握Hibernate的基本使用方法,为进一步...

    Java相关课程系列笔记之十四Hibernate学习笔记.doc

    1. **配置文件设置**:通过`hibernate.cfg.xml`文件配置数据库连接信息。 2. **实体类映射**:定义实体类,并使用注解或XML映射文件描述类与数据库表之间的映射关系。 3. **创建SessionFactory**:读取配置文件并...

    连接数据库jar包

    Spring JDBC模块提供了一个JdbcTemplate和NamedParameterJdbcTemplate,这两个模板类简化了执行SQL语句的过程,自动处理了事务管理、异常翻译以及结果集的处理。此外,它还支持数据源配置和事务管理,可以无缝集成到...

Global site tag (gtag.js) - Google Analytics