Hibernate的Configuration和SessionFactiory
Configuration:
Configuration是hibernate的入口,负责管理Hibernate的配置信息,这些配置信息都是从配置文件hibernate.cfg.xml或者Hibernate.properties读取的,当然也可以自定义文件名称,只要在实例化Configuration的时候指定具体的路径就可以了;
SessionFactiory:
Configuration的实例会根据当前的配置信息,构造SessionFactory实例。SessionFactory是线程安全的,一般情况下一个应用中数据库共享一个SessionFactory实例。Hibernate的SessionFactory接口提供Session类的实例,Session类用于完成对数据库的操作。由于SessionFactory实例是线程安全的(而Session实例不是线程安全的),所以每个操作都可以共用同一个SessionFactory来获取Session。
Hibernate配置文件分为两种格式,一种是xml格式的配置文件,另一种是属性文件格式的配置文件,因此构建SessionFactory也有两种方法:
1 从XML文件读取配置信息构建SessionFactory从XML文件读取配置信息构建SessionFactory的具体步骤如下。
1) 创建一个Configuration对象,并通过该对象的configura()方法加载Hibernate配置文件。
Configuration config = new Configuration().configure();
configure()方法:用于告诉Hibernate加载hibernate.cfg.xml文件。
Configuration在实例化时默认加载classpath中的hibernate.cfg.xml,当然也可以加载名称不是hibernate.cfg.xml的配置文件,例如myhibernate.cfg.xml。
Configuration config = new Configuration().configure("myhibernate.cfg.xml");
2) 完成配置文件和映射文件的加载后,将得到一个包括所有Hibernate运行期参数的Configuration实例,通过Configuration实例的buildSessionFactory()方法可以构建一个惟一的SessionFactory。
SessionFactory sessionFactory = config.buildSessionFactory();
构建SessionFactory要放在静态代码块中,因为它只在该类被加载时执行一次。一个典型的构建SessionFactory的代码如下。
public static SessionFactory sessionFactory; static{
try{
Configuration config = new Configuration();
config.configure();
sessionFactory = config.buildSessionFactory();
}catch(RuntimeException e){
e.printStackTrace();
throw e;
}
}
2 从属性文件读取配置信息构建SessionFactory,从属性文件读取配置信息构建SessionFactory的具体步骤如下。
1) 创建一个Configuration对象,此时Hibernate会默认加载classpath中的配置文件hibernate.properties。
Configuration config = new Configuration();
2) 由于在配置文件中缺少相应的配置映射文件的信息,所以此处需要通过编码方式加载,这可以通过Configuration对象的addClass()方法或者addResource()来实现下。
config.addClass(MyBean.class);
//或者
config.addClass(MyBean.hbm.xml);
注意:这里加载的路径取默认值
3) 完成配置文件和映射文件的加载后,将得到一个包括所有Hibernate运行期参数的Configuration实例,通过Configuration实例的buildSessionFactory()方法可以构建一个惟一的SessionFactory。
SessionFactory sessionFactory = config.buildSessionFactory();
啦啦啦
Hibernate的Configuration和SessionFactiory的更多相关文章
- [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Caused by: java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- hibernate之Configuration对象
任务:读取主配置信息 1. Configuration config = new Configuration(); 使用hibernate,但并没有读取 2. config.config ...
- Exception 03 : org.hibernate.MappingException: Unknown entity: org.hibernate.cfg.Configuration
异常名称 org.hibernate.MappingException: Unknown entity: org.hibernate.cfg.Configuration 异常详细信息 org.hibe ...
- java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration 最近在做项目的时候遇到了这个问题,很是困扰,多次尝试后发现是jar包的问 ...
- hibernate中Configuration类的作用
问题:我们在获得一个SessionFactory对象的时候经常是写下面这行代码: SessionFactory sessionFactory = new Configuration().configu ...
- Hibernate的Configuration对象的configure()方法
Configuration configuration=new Configuration(); configuration.configure(); 在Hibernate底层实现configure( ...
- Hibernate学习---Configuration,Session,SessionFactory
上一节我们讲到了Hibernate的测试,并且给出了测试代码,刚开始看见这个测试代码的同学估计是一头雾水把,所以这一节我们来讲一下测试代码. 本节主要内容: Configuration Session ...
- hibernate中configuration和配置文件笔记
hibernate的核心类和接口 Configuration类 作用:(1)读取hibernate.cfg.xml文件 (2)管理对象关系映射文件<mapping resource=" ...
随机推荐
- 编译和运行java文件 找不到或无法加载主类
这边提供一个关于程序中含有package关键字,使用“终端”运行程序时出现“找不到或无法加载主类”,而使用Eclipse软件可以正常运行程序的可能解决办法. 例如程序名为HelloWorldTest. ...
- APICloud 实践 —— 安装与创建应用
1.安装APICloud Studio 下载地址:https://www.apicloud.com/devtools 2.打开 APICloud Studio,登录 3.登录成功,在 代码编辑器 创建 ...
- 安卓程序代写 网上程序代写[原]Android开发技巧--ListView
1. ListView中元素的排序 ListView中的元素排序, 即将数据源排序即可; 给集合排序的方法 : 调用Collections的sort(list, Comparator)方法, 该方法需 ...
- Sword libcurl使用
libcurl编译 >> ./configure --prefix=/opt/soft/curl --disable-ldap --disable-ldaps >> make ...
- SSH远程启动tomcat后,退出SSH,tomcat也退出
在原本的启动命令 ./catalina.sh start前面加上nohup,即nohup ./catalina.sh start其中,nohup 是linux命令,不挂断运行,具体如下:语法:nohu ...
- vscode 自定义快捷键
vscode 自定义快捷键 这两天用vscode写了下Python,感觉很舒服,只是快捷键不如人意,略作修改,放上来作为备份.smile~ 主要更改: 代码格式化 ctrl+alt+l 执行代码 ct ...
- Java如何处理异常层次结构?
在Java编程中,如何处理异常层次结构? 以下是异常层次结构的示例图 - 此示例显示如何通过扩展Exception类来处理异常层次结构. package com.yiibai; class Anima ...
- 一款标注颜色,距离的小软件 markman
长度标记 坐标和矩形标记 色值标记 文字标记 长度自动测量 标记拖拽删除 支持多种图片格式 支持PSD(需用最大兼容保存).PNG.BMP.JPG格式 设计稿自动刷新 在标注的 ...
- Couchbase 集群小实践
局域网 两台机 192.168.1.2 我们称为A机器 192.168.1.3 我们称为B机器 配置集群的时候,从A或者是B的web后台都可以添加, 在这里 我们以 A机器为主 目 ...
- Oracle触发器给表自身的字段重新赋值出现ORA-04091异常
业务描述如下: 在插入一个表的时候,需要根据一个字段的值更新另一个字段的值.当然也可以通过程序就能很简单得实现,只是这个字段只是数据交换用,和系统主业务没关系,不想修改程序,所以才用触发器的方式实现. ...