【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

相关文章
|
9月前
|
SQL XML 存储
Hibernate框架【五】——基本映射——多对多映射
Hibernate框架【五】——基本映射——多对多映射
129 0
|
9月前
|
SQL XML Java
Hibernate框架【四】——基本映射——多对一和一对多映射
Hibernate框架【四】——基本映射——多对一和一对多映射
105 0
|
9月前
|
XML 存储 Java
Hibernate框架【三】——基本映射——一对一映射
Hibernate框架【三】——基本映射——一对一映射
46 0
|
SQL XML 缓存
认识 ORM 框架 Hibernate,为什么 2022 年了还在谈论它?
前言 Hibernate 作为一种全自动 ORM 框架,在几年前常与 Spring、Struts2 一起使用,并称 SSH,作为主流的企业级应用框架。伴随着 MyBatis 的诞生,以及 Hibernate 本身的一些缺陷,如今 Hibernate 已经慢慢淡出了大家的视野。
414 0
认识 ORM 框架 Hibernate,为什么 2022 年了还在谈论它?
|
前端开发 JavaScript Java
SpringBoot 项目中整合数据校验框架 hibernate-validator
SpringBoot 项目中整合数据校验框架 hibernate-validator
334 0
SpringBoot 项目中整合数据校验框架 hibernate-validator
|
前端开发 Java 数据库连接
源码解析最流行的Validator框架——Hibernate Validator
源码解析最流行的Validator框架——Hibernate Validator
564 0
源码解析最流行的Validator框架——Hibernate Validator
|
SQL Java 数据库连接
Hibernate与Sping框架的整合
Hibernate与Sping框架的整合
69 0
|
Java 数据库连接 程序员
ORM框架Hibernate全面解读
Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。
311 0
|
Java 数据库连接 数据库
Hibernate框架的快速入门
Hibernate框架的快速入门
|
前端开发 Java 数据库连接
连Hibernate技术都不清楚,你敢说你自己会ORM框架?
ORM框架不是一个新话题,它已经伴随我们很多年了。它提供了概念性的、易于理解的数据模型,将数据库中的表和内存中的对象建立了很好的映射关系。在Java中常用的ORM框架主要有两个:Hi...
133 0