【hibernate框架】核心开发接口-Configuration接口

简介:
Configuration接口:
a)AnnotationConfiguration
b)进行配置信息的管理
c)用来产生SessionFactory
d)可以在configure方法中指定hibernate配置文件
e)只需关注一个方法即:buildSessionFactory()




1.关于Configuration
什么叫做Configuration?
new 出来一个Configuration()方法,调它的configure()方法,
默认它会加载hibernate.cfg.xml文件,把配置信息读出来。
根据配置信息的数据库链接信息,生成出一个数据库连接池,就可以和数据库连接了。


如果hibernate.cfg.xml改名了(如改为hibernate.xml),可以用重载configure()方法指定文件名。
sessionFactory=new Configuration().configure("hibernate.xml").buildSessionFactory();


2.sessionFactory
sessionFactory里面维护的最重要的东西就是数据库连接池。
当它产生一个session的时候,会从里面拿一个连接(connection)给session。
也就是说,session中的conn就是sessionFactory通过配置文件里的配置信息,产生的数据库的连接池,从连接池中取出来的(session就等同于一个数据库的连接conn)


3.session
拿到session的方法:
方法1:
Session session=sessionFactory.openSession();
session.close();
方法2:
Session session=sessionFactory.getCurrentSession();
//不用session.close();


opensession与getCurrentSession区别:


opensession永远是新建一个session,而getCurrentSession从上下文里面拿一个已经存在的session(未提交),如果上下文不存在session就新建一个session。
验证:
Session session=sessionFactory.getCurrentSession();
Session session2=sessionFactory.getCurrentSession();
System.out.println(session==session2);
打印:true(没有提交之前,如果session提交过后再getCurrentSession就是新的了)

Session session=sessionFactory.openSession();
Session session2=sessionFactory.openSession();
System.out.println(session==session2);
打印false


什么是上下文(context)?
在hibernate.cfg.xml中,有以下的配置:
 <!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property> 
这就是指定拿到session的上下文。默认是从当前thread(线程)里面拿
不在这里指定的话就无法用getCurrentSession();方法
current_session_context_class可以设置以下的值:jpa,thread,managed,自己写的类来处理。
设置jpa是使用connection来管理。


注意getCurrentSession();与openSession();不要混用


转载请注明出处http://blog.csdn.net/acmman

相关文章
|
1月前
|
SQL 缓存 Java
框架分析(9)-Hibernate
框架分析(9)-Hibernate
|
1月前
|
SQL 缓存 Java
Java一分钟之-Hibernate:ORM框架实践
【5月更文挑战第15天】Hibernate是Java的ORM框架,简化数据库操作。本文列举并解决了一些常见问题: 1. 配置SessionFactory,检查数据库连接和JDBC驱动。 2. 实体类需标记主键,属性映射应匹配数据库列。 3. 使用事务管理Session,记得关闭。 4. CRUD操作时注意对象状态和查询结果转换。 5. 使用正确HQL语法,防止SQL注入。 6. 根据需求配置缓存。 7. 懒加载需在事务内处理,避免`LazyInitializationException`。理解和避免这些问题能提升开发效率。
41 0
|
1月前
|
SQL Java 数据库连接
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
|
1月前
|
SQL Java 关系型数据库
数据库访问:什么是Hibernate框架?
【4月更文挑战第15天】Hibernate是开源ORM框架,将Java对象与数据库表映射,简化对象-关系映射,提升开发效率和性能。它自动化处理数据操作,支持多种数据库,自动生成SQL,提供配置选项和高级特性,减少手动SQL编写,便于切换数据库。
34 2
|
11月前
|
SQL XML 存储
Hibernate框架【五】——基本映射——多对多映射
Hibernate框架【五】——基本映射——多对多映射
139 0
|
9月前
|
Java 数据库连接
简述使用Hibernate框架的几个步骤
简述使用Hibernate框架的几个步骤
42 0
|
10月前
|
SQL Java 关系型数据库
Hibernate框架概述
Hibernate框架概述
88 0
|
11月前
|
SQL 缓存 Oracle
Hibernate框架【一】——HIbernate框架介绍
Hibernate框架【一】——HIbernate框架介绍
193 0
|
11月前
|
SQL XML Java
Hibernate框架【四】——基本映射——多对一和一对多映射
Hibernate框架【四】——基本映射——多对一和一对多映射
115 0
|
11月前
|
XML 存储 Java
Hibernate框架【三】——基本映射——一对一映射
Hibernate框架【三】——基本映射——一对一映射
56 0