- 浏览: 567681 次
文章分类
- 全部博客 (235)
- 数据库 (12)
- j2se (10)
- JQuery (2)
- 经验总结 (4)
- 防毒 (1)
- Struts (20)
- Spring (12)
- 项目 (3)
- 电脑维修项目 (1)
- Eclipse (2)
- JSP (13)
- mysql (5)
- Hibernate (54)
- ssh (1)
- 学习网站 (1)
- tomcat (9)
- servlet (24)
- java语言基础 (1)
- jbpm (1)
- linux (0)
- 技巧积累 (1)
- javaBean (2)
- 设计模式 (2)
- 实用的操作 (9)
- oracle (1)
- UML学习 (1)
- 版本控制 (1)
- 框架 (9)
- javaWeb基础 (13)
- c语言 (0)
- ant (0)
- 关于权限 (3)
- 真正开发有用 (5)
- javascript (2)
- 算法 (1)
- J2EE (1)
- junit (1)
最新评论
-
alleni123:
不错 一搜就搜到这个了
ssession和servletContext的比较 -
hua7381:
楼主,你真实帮了大忙了!!
万能乱码处理---url传中文 -
albrich:
1楼是正解
摘] 装了个Tomcat遇到的问题 -
JA_mcj:
ssession和servletContext的比较 -
haotw:
看了很有帮助,总算对hibernate的延迟加载有一定的了解了 ...
[转]hibernate延迟加载
2.6 构建SessionFactory
Hibernate的SessionFactory接口提供Session类的实例,Session类用于完成对数据库的操作。由于SessionFactory实例是线程安全的(而Session实例不是线程安全的),所以每个操作都可以共用同一个SessionFactory来获取Session。
Hibernate配置文件分为两种格式,一种是xml格式的配置文件,另一种是Java属性文件格式的配置文件,因此构建SessionFactory也有两种方法,下面分别介绍。
2.6.1 从XML文件读取配置信息构建SessionFactory
从XML文件读取配置信息构建SessionFactory的具体步骤如下。
(1)创建一个Configuration对象,并通过该对象的configura()方法加载Hibernate配置文件,代码如下。
Configuration config = new Configuration().configure();
configura()方法:用于告诉Hibernate加载hibernate.cfg.xml文件。Configuration在实例化时默认加载classpath中的hibernate.cfg.xml,当然也可以加载名称不是hibernate.cfg.xml的配置文件,例如wghhibernate.cfg.xml,可以通过以下代码实现。
Configuration config = new Configuration().configure("wghhibernate.cfg.xml");
(2)完成配置文件和映射文件的加载后,将得到一个包括所有Hibernate运行期参数的Configuration实例,通过Configuration实例
的buildSessionFactory()方法可以构建一个惟一的SessionFactory,代码如下。
SessionFactory sessionFactory = config.buildSessionFactory();
构建SessionFactory要放在静态代码块中,因为它只在该类被加载时执行一次。一个典型的构建SessionFactory的代码如下。
例程2-9:光盘\mr\02\sl\09\CoreSession.java
- import org.hibernate.*;
- import org.hibernate.cfg.*;
- public class CoreSession {
- static SessionFactory sessionFactory;
- //注意到这里的SessionFactory都是static的
- //初始化Hibernate,创建SessionFactory实例,只在该类被加载到内存时执行一次
- static{
- try{
- Configuration config = new Configuration().configure();
- sessionFactory = config.buildSessionFactory();
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- }
- }
2.6.2 从Java属性文件读取配置信息构建SessionFactory
从Java属性文件读取配置信息构建SessionFactory的具体步骤如下。
(1)创建一个Configuration对象,此时Hibernate会默认加载classpath中的配置文件hibernate.properties,代码如下。
Configuration config = new Configuration();
(2)由于在配置文件中缺少相应的配置映射文件的信息,所以此处需要通过编码方式加载,这可以通过Configuration对象的
addClass()方法实现,具体代码如下。
config.addClass(BranchForm.class);
addClass()方法用于加载实体类。
(3)完成配置文件和映射文件的加载后,将得到一个包括所有Hibernate运行期参数的Configuration实例,通过Configuration实例
的buildSessionFactory()方法可以构建一个惟一的SessionFactory,代码如下。
SessionFactory sessionFactory = config.buildSessionFactory();
构建SessionFactory要放在静态代码块中,因为它只需在该类被加载时执行一次,一个典型的构建SessionFactory的代码如下。
例程2-10:光盘\mr\02\sl\10\CoreSession.java
- import org.hibernate.*;
- import org.hibernate.cfg.*;
- public class CoreSession {
- static SessionFactory sessionFactory;
- //初始化Hibernate,创建SessionFactory实例,只在该类被加载到内存时执行一次
- static{
- try{
- Configuration config = new Configuration();
- config.addClass(BranchForm.class);
- sessionFactory = config.buildSessionFactory();
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- }
- }
发表评论
-
多对多双项关联
2007-12-02 16:39 4076数据库中仍然是利用一个中间表 持久化类中,都各自包含对方的集合 ... -
多对多单项关联
2007-12-02 16:02 44881.多对多单项关联 在数据库中多对多的关系,表之间设置一个中间 ... -
一对一关联
2007-12-02 14:13 3629一对一的关联 分为外键关联和主键关联 外键关联:在关系模型的表 ... -
双向的多对一或者双向的一对多
2007-12-02 00:38 3564一对多或者多对一都是从一方来看, 双向是从两个方向来看 这个时 ... -
一对多的另一个问题
2007-12-02 00:19 3320如果email 的一方设置uid 不能为空的话回报错,所以需要 ... -
做一对多遇到的几个问题(单向)
2007-12-02 00:14 3266java 代码 public class Use ... -
多对一举例(单项的,从一个方向看)
2007-12-01 23:15 3632java 代码 public class Use ... -
hibernate多对一
2007-12-01 22:59 4255处理多对一的时候 感觉关系模型多对一和一对多是一样的 在域模型 ... -
[转]Hibernate中的outer-join(二):fetch
2007-12-01 22:49 4606... -
hibernate中集合排序
2007-12-01 18:49 3686set,map可以支持内存排序和数据库排序 List什么都不支 ... -
[转] hibernate中给集合排序的方法
2007-12-01 18:47 5760<iframe style="MARGIN ... -
[转]集合类型和结果集排序
2007-12-01 18:39 3490言归正传,Hibernate中的Collection类型分为有 ... -
[转]hibernate延迟加载
2007-12-01 18:22 5980hibernate 延迟加载问题探 ... -
[转]主键自动生成办法
2007-12-01 18:11 3415... -
[转]hibernate中的 bag--解释的太好了.
2007-12-01 17:25 20429Bag是集合,与Set不同的是,Bag允许重复的元素, 在Ja ... -
hibernate值类型集合映射之Map
2007-12-01 17:02 2900java 代码 public class Use ... -
hibernate值类型集合映射之List
2007-12-01 16:43 3308java 代码 public class Use ... -
值类型映射---Set(2)
2007-12-01 13:43 3110这里自定义Email类,set里面放的是 email 类,非 ... -
值类型映射---Set(1)
2007-12-01 13:20 3399这里介绍2种不同的域模型的设计, 一种是Set里面装Strin ... -
事务的作用
2007-12-01 12:41 4557事务的作用是为了防止修改数据库, 如果只是查询那么就没必要修改 ...
相关推荐
在Java的持久化框架Hibernate中,`SessionFactory`是核心组件之一,它负责管理数据库会话并提供对象-关系映射(ORM)的功能。本篇文章将深入探讨`SessionFactory`的使用,以及如何创建和操作它。 `SessionFactory`...
HibernateSessionFactory.java
本篇文章将深入探讨`HibernateSessionFactory`及其在Hibernate中的作用,以及如何使用它来实现增、删、查、改(CRUD)操作。 `SessionFactory`是Hibernate的核心组件,它是线程安全的,负责管理数据库连接和会话。`...
hibernate中的SessionFactoryhibernate中的SessionFactoryhibernate中的SessionFactory
确保这些依赖已添加到你的构建工具(如Maven或Gradle)的配置文件中。 接下来,配置Hibernate的实体类。在Hibernate中,每个数据库表通常对应一个Java实体类,通过注解(@Entity)来标识。例如: ```java @Entity ...
在Spring框架中,整合Hibernate是常见的操作,Spring通过其强大的依赖注入(DI)特性,能够帮助我们更好地管理和控制SessionFactory以及与Hibernate相关的操作。本示例将深入探讨如何使用Spring将SessionFactory注入...
标题中的“新Hibernate SessionFactory().getCurrentSession()猫腻”指的是在使用Hibernate ORM框架时,一个常见但不为人熟知的细节,即SessionFactory().getCurrentSession()方法的使用。在深入讲解这个知识点之前...
标题中的“SessionFactory.getCurrentSession与openSession的区别”是关于Hibernate框架中的两个关键操作,它们都是用于在Hibernate中获取数据库会话的。理解它们的区别对于优化数据访问性能和管理事务至关重要。 ...
Criteria接口则提供了一种面向对象的方式来构建查询,更加灵活,同时也支持动态构建查询条件。 至于`Callback`接口,它定义了一些回调方法,当对象的生命周期事件(如加载、保存、删除等)发生时,Hibernate会调用...
用于获得Session会话及关闭Session会话
(S+S+H)(private_SessionFactory_属性_dao类)_方式_SSH_整合--总结
Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类
针对sessionFactory没有出现的可能原因;
2. **构建DataSource**:使用Apache Commons DBCP、C3P0或HikariCP等连接池库,根据配置信息创建DataSource对象。每个DataSource对应一个数据源。 3. **配置SessionFactory**:对于每个DataSource,我们需要创建...
本资源“MySSH.rar”提供了一个基于SSH的项目示例,特别关注了Spring框架对SessionFactory的管理,这对于理解和优化企业级应用的数据库操作至关重要。 Spring是一个全面的后端开发框架,它支持依赖注入(DI)和面向...