hibernate的Configuration类和SessionFactory接口

【大话Hibernate】Hibernate的核心接口和类 Hibernate的核心类和接口一共有6个,分别为:Session、SessionFactory、 Transaction、Query、Criteria和Configuration。这6个核心和类接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这6个核心接口和类分别加以介绍。 Configuration Configuration类的作用是对... 阅读详情

1,Configuration类的主要作用是解析Hibernate的配置文件和映射文件中的信息,即负责管理Hibernate的配置信息。Hibernate在运行时需要获取一些底层实现的基本信息,如数据库驱动类,数据路URL,数据库登录名,数据库登录密码等。

     通过Configuration对象的buildSessionFactory()方法可创建SessionFactory对象之后,由于配置信息已经由Hibernate维护并绑定在返回的SessionFactory中,此时Configuration已没有价值。

<pre name="code" class="html"><pre name="code" class="java">Configuration configuration = new Configuration(); 
configuration.configure("/hibernate.cfg.xml");
sessionFactory = configuration.buildSessionFactory();



我们看到:要创建一个Configuration,可以使用 
Configuration config = new   Configuration().configure(); 这里,Configuration是入口,通过它来获得配置文件。
同时Configuration还可以通过指定参数来传递:
下面看:
File file = new File("c:\\Hibernate.xml"); 
Configuration config = new Configuration().config(file); 

2,SessionFactory接口

SessionFactory接口负责初始化Hibernate。它充当数据存储元的代理,并负责创建Session对象。通过Configuration实例构建SessionFactory对象。

sessionFactory = configuration.buildSessionFactory();
SessionFactory是线程安全的,可以被多个线程调用。在我们实际开发中,我们可以在初始化的部分构造一个SessionFactory即可。多数情况下,一个应用只初始化一个SessionFactory,为不同的线程提供Session。

下面是myeclipse添加Hibernate框架时,自动创建的HibernateSessionFactory.java文件。文件中有如下方法:


package SessionFactory;

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;
	}

}



spring 自动注入Hibernate中的SessionFactory 探索 之前用Spring的注解模式配置Hibernate的时候觉得很简单。 使用@autowire 自动注入 @Autowired private SessionFactory sessionFactory; 然后在方法中直接使用 Session session = sessionFactory.getCurrentSession() 但是,后来看源码的时候却有了疑问。 在XML配置文件中, bea 阅读详情

相关推荐

从气象预报到物流规划:多尺度地理加权回归(MGWR)在ArcGIS Pro中的实战应用

本文深入探讨了多尺度地理加权回归(MGWR)在ArcGIS Pro中的实战应用。通过对比传统GWR模型,MGWR的核心优势在于能识别不同解释变量的独特空间作用尺度,有效解决空间异质性问题。文章结合气象预报误差修正与物流网点选址两个案例,详细讲解了从数据准备、参数设置、带宽优化到结果解读的全流程,为地理数据分析师处理复杂空间数据提供了强大工具。

egg99的博客 1034

hibernate之构建SessionFactory (转)

a651944226的专栏 1250

EtherCAT从站协议栈---- sampleappl.c 文件解析

这个源文件实际上包含该项目的入口函数main函数。 那么如何找到入口函数呢? 可以进入debug的simulator模式,选中run to main(), 当执行完启动文件startup_cm3.s后就进入了main函数(注意在main函数之前还进入了SystemInit函数), 如下图所示: 这个main函数主要架构如下: int main(void) { HW_Init(); /*PDI(过程数据接口)初始化,这里用的是MCI接.

Jiawei_Z的博客 3069

Configuration.buildSessionFactory()过时之后,获取SessionFactory的Util类写法及一些设想

import org.hibernate.Session;import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuil

雾重锁山峦 云淡见奇峰 1万+

基于DNN、CNN与SVM的串联电弧故障智能检测:从原理到嵌入式部署

在电气安全与工业物联网领域,时间序列分类是处理传感器信号、实现状态监测与故障诊断的核心技术。其原理在于从连续的信号数据中提取有效特征,并利用机器学习模型识别异常模式。这项技术的核心价值在于能够实现设备预测性维护、提升系统安全性并降低运维成本,广泛应用于智能电表、电机健康监测、电力设备保护等场景。本文聚焦于电气安全中的一个具体且危险的隐患——串联电弧故障的检测。针对这一隐蔽性强、传统方法误报率高的问题,项目深入实践了三种主流AI模型:深度神经网络、卷积神经网络和支持向量机。通过对比DNN的通用特征学习能力、C

weixin_31860973的博客 413

麒麟系统grub被锁怎么办?双密码遗忘救援指南(实测V10 SP3版本)

本文详细介绍了麒麟系统V10 SP3版本在GRUB和root密码双遗忘情况下的救援指南。通过ISO镜像进入救援模式,结合单用户模式操作,实现密码重置与系统权限恢复,特别适用于等保合规环境。

387

关于Hibernate下Configuration类的buildSessionFactory()方法过期

最近在学Hibernate,调用Configuration的buildSessionFactory()方法时,提示该方法已过时,然后查看了一下随Hibernate一起发布的文档,但是文档中给出的示例仍然使用buildSessionFactory()方法,于是根据MyEclipse中提示使用buildSessionFactory(ServiceRegistry)方法,查找文档找到了ServiceRe

yuliangsheng的专栏 1872

lighttools用透镜旋转手动创建菲尼尔透镜

学过很多软件,都没有留下痕迹,很多年之后只记得学过的软件常用的一些功能,稍微难一些的再次用起需要重新学,但如果留下点痕迹,重新再用就会很快。lighttools无意之中接触了,记一点点笔记吧。...

kingsai2012的博客 4332

Hibernate学习笔记 之 configuration、sessionFactory、session

1. Hibernate框架的概述 Hibernate简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在

javafirst 782

MMI分束器仿真优化:用Lumerical FDTD实现95%耦合效率的实战技巧

本文详细介绍了使用Lumerical FDTD软件对MMI分束器进行仿真优化的实战技巧。通过构建高保真模型、精确配置光源与边界条件,并重点优化波导结构与taper设计,系统性地将器件的耦合效率提升至95%以上。文章还分享了利用参数扫描、varFDTD加速等高级方法,帮助硅光芯片设计工程师高效实现高性能MMI分束器设计。

rainy的博客 773

FPGA实战:从零构建eMMC控制器(Verilog篇)

本文详细介绍了如何使用Verilog从零构建FPGA上的eMMC控制器,涵盖eMMC接口基础、命令系统解析、关键模块设计及性能优化技巧。通过实战案例,帮助开发者掌握高速数据存储解决方案,提升嵌入式系统开发能力。

weixin_26802933的博客 298

Hibernate4 buildSessionFactory与 ServiceRegistry

在用Hibernate4时会发现:     [java] view plaincopy   SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();     buildSessionFactory()废弃,相信很多人...

coffeehot的专栏 453

基于YOLOv8的农作物病虫害检测系统设计与实现

国内如中国农业大学的科研团队采用改进的Faster R-CNN模型对小麦病害进行检测,取得了较好的效果。农作物病虫害是影响农业生产的重要因素之一,每年因病虫害导致的农作物减产高达20%-40%。YOLO(You Only Look Once)系列算法作为目标检测领域的代表性模型,以其高效、准确的特点在众多领域得到广泛应用。YOLOv8作为该系列的最新版本,在精度和速度上都有显著提升,非常适合农作物病虫害检测这类需要实时处理的应用场景。然而,现有研究仍存在一些不足:一是模型复杂度高,难以部署到移动设备;

YOLO 794

Hibernate的主要类,Configuration,SessionFactory

Configuration类 类声明: public class Configuration extends Object implements Serializable 一,Configuration的作用是对Hibernate进行配置 以及对其进行启动。它包括: Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池。...

xiao_ma_优快云的博客 450

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Configuration、SessionFactory、Session、Transaction

public class Configuration extends Object implements Serializable An instance ofConfigurationallows the application to specify properties and mapping documents to be used when creating aSessi...

数据库天地 227

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Hibernate常用接口探究(Configuration,SessionFactory,Session,Transactio)

目录 Configuration类 SessionFactory接口 Session接口 Transaction接口 Configuration类 Configuration类主要用来读取配置文件,启动Hibernate,并负责管理Hibernate的配置信息。一个应用程序只创建一个Configuration对象。 Configuration类的作用是对Hibernate进行配置,启...

qq_40663637的博客 494

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Hibernate的几个关键类的详解及Hibernate的运行过程

Configuration 类 Configuration 类负责管理 Hibernate 的配置信息。包括如下内容: Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件)。 持久化类与数据表的映射关系(*.hbm.xml 文件) 创建 Configuratio...

144

Hibernate SessionFactory 的创建方式

Hibernate 3创建 SessionFactory 的方式 Hibernate 4 创建 SessionFactory 的方式 Hibernate 5 创建 SessionFactory 的方式

kevis_xsw的博客 710

Hibernate系列三:基本概念

一、使用 Hibernate 进行数据持久化操作,通常有如下步骤:  编写持久化类: POJO + 映射文件。  获取 Configuration 对象。  获取 SessionFactory 对象。  获取 Session,打开事务。  用面向对象的方式操作数据库。  关闭事务,关闭 Session。 二、Configuration 类 1、Configuration 类负责管理 Hiberna...

苍穹尘的博客 294

hibernate的几个重要的类和接口

Configuration类 该类的对象会自动加载hibernate.cfg.xml文件,同时也可以定义自己的配置文件 sessionFactory接口 由于SessionFactory是重量级的,也就是说创建SessionFactory需要消耗大量的资源,所以在整个应用程序中最好只存在一个SessionFactory,这就需要把获取SessionFactory的方法单独抽取出来封装成...

weixin_30700977的博客 73

Hibernate核心类用法-使用Configuration装载配置

Configuration接口的作用是对Hibernate进行配置 以及对他进行启动 在Hibernate的启动过程中 Configuration类的实例首先定位映射文档的位置 读取这些配置 然后创建一个SessionFactory对象 一个org.hibernate.cfg.Configuration实例代表了一个应用程序中Java类型到SQL数据库映射的完整集合。Configurati

编程之路 5381

第二章Hibernate的核心接口与类

Hibernate中的核心接口与类 Configuration类 SessionFactory类 Session类 Transaction类 Query接口 Criteria接口     2. 使用MyEclipse可视化开发Hibernate的例子(略)     3. 设置Hibernate使用Tomcat的连接...

疯狂的草儿 175

Hibernate的核心接口与类

Hibernate的核心接口与类 在实际的Hibernate应用中,使用到的Hibernate核心接口与类并不多,熟悉和掌握这些接口和类的基本用法之后,即可开发Hibernate。如果要更深入地使用Hibernate,还需要学习Hibernate的延迟加载和缓存处理等高级的内容。在Hibernate应用中常用的Hibernate接口与类如图2 1所示。  

远有青山 3898

【Hibernate框架学习】:Hibernate进阶之Hibernate核心接口和类(一)

我们来看一下Hibernate的执行流程:                         由此我们可以大概知道Hibernate的核心接口和类,Hibernate的核心类和接口一共有6个,分别为:Session、 SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心类和接口在任何开发中都会用到。通 过这些接口,不仅可

life is wonderful 2600
上一篇: hibernate中的PO持久化对象及PO三种状态
下一篇: hibernate的Transaction接口理解
tuke_tuke
博客等级 码龄11年 532粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值