`

第二章Hibernate的核心接口与类

阅读更多
  1. Hibernate中的核心接口与类
  • Configuration类
  • SessionFactory类
  • Session类
  • Transaction类
  • Query接口
  • Criteria接口

    2. 使用MyEclipse可视化开发Hibernate的例子(略)

    3. 设置Hibernate使用Tomcat的连接池

    4. Hibernate使用C3P0连接池

Hibernate中的接口与类

根据上图的结构可以得出他们的依赖关系。

  • Configuration类负责管理Hibernate的配置信息

     1.Hibernate运行的底层信息:数据库的URL,用户名,用户密码,JDBC驱动类,数据库Dialect,数据库连接池等。

       2. Hibernate配置文件默认为hibernate.cfg.xml,或者hibernate.properties

     3.Hibernate映射文件(*.hbm.xml)

//1. new a configuraion instance
Configuration  config = new Configuration();
//2.load the configure file
config.configure();
//3.get sessioonFactory,at this stage the configratino is useless.
SessionFactory sessionFactory = config.buildSessionFactory();
  •   SessionFactory(会话工厂)接口

     1.会话工厂缓存了生成的SQL语句和一些数据

     2.会话工厂在用用初始化时被创建,是一个重量级的类。通常情况下,整个应用只有唯一的一个会话工厂。

     3 .使用Hibernate访问多个数据库,需要对每一个数据库使用一个会话工厂

       4.应用程序从会话工厂里获得Session(会话)实例

 

//1. new a configuraion instance
Configuration  config = new Configuration();
//2.load the configure file
config.configure();
//3.get sessioonFactory,at this stage the configratino is useless.
SessionFactory sessionFactory = config.buildSessionFactory();
  • Session(会话)接口

    1.Session也成为持久化管理,因为它是与持久化有关的操作接口

    2.Session代表与数据库之间的一次操作。

    3.Session通过SessionFactory打开,在所有的工作完成后,需要关闭。

    4.会话并不是线程安全的,应该被设计为每次只能在一个线程中使用

 

//1. new a configuraion instance
Configuration  config = new Configuration();
//2.load the configure file
config.configure();
//3.get sessioonFactory,at this stage the configratino is useless.
SessionFactory sessionFactory = config.buildSessionFactory();
//get session
Session session = sessionFactory.getCurrentSession();

 

   save()方法

   get()/load()方法

   update()方法

   delete()方法

  •    load()与get()方法的区别:

    1. 使用load()方法,如果没有找到记录,就会抛出违例

    2.使用get()方法,如果没有找到激励,返回Null

    3. 两个方法对缓存对象的读取也不同

 

  • Transaction(事务)接口

     1.Transaction从底层的事务实现中抽象出来的接口

     2.可能是一个JDBC事务或一个JTA事务,这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性

     3.使用Hibernate进行操作时必须显示的调用Transaction

Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
......
tx.commit();
session.close();
 
  • Query接口

     1.使用Query类型的对象可以方便我们对数据库进行查询操作,它使用  QBC,QBE,HQL或者原生SQL(Native SQL)对数据执行查询操作。

Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from guestbook");
List list = query.list();
tx.commit();
  •  Criteria接口

    1.Criteria接口与Query接口非常类似,它允许我们创建并执行面向对象方式的查询。

 

Configurain config = new Configuraion().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
Criteria crit = session.CreateCriteria(GuestBook.class);
Criterion  criterion1 = Restrictions.like("name","刘%");
crit.add(criterion1);
List list = crit.list();
tx.commit();
 

    2. 使用MyEclipse可视化开发Hibernate的例子(略)

Exception in thread "main" org.hibernate.HibernateException: No CurrentSessionContext configured!
	at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:620)
	at com.crazy.HibernateTest.main(HibernateTest.java:16)

  发生一下异常时,是因为CurrentSession没有配置,所以不能使用getCurrentSession来获取Session。应该使用openSession来获取session。

No CurrentSessionContext configured!

    3. Hibernate设置使用Tomcat中的连接池

  •       修改Tomcat的context.xml
<Context reloadable="true">
	<Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000"
	username="scott" password="tiger" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:ora92"/>
</Context>

 

  •       修改一下Hibernate的配置文件

    这种配置是针对Web应用程序,否则不可以这样配置。

<property name="connection.datasource">java:com/env/jdbc/oracleds</property>
  •       Hibernate设置使用c3p0连接池

        首先添加C3P0的jar文件。

        配置内容如下:  

	<!-- configuration of c3p0-->
	<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
	<property name="c3p0.max_size">10</property>
	<property name="c3p0.min_size">5</property>
	<property name="c3p0.timeout">10</property>
	<property name="c3p0.max_statements">10</property>

    一篇关于c3p0配置信息的文章 : http://msq.iteye.com/blog/60387

 

 


 

 

 

 

 

分享到:
评论

相关推荐

    Hibernate 手册 第一章 Hibernate入门

    《Hibernate 手册 第一章 Hibernate入门》 Hibernate 是一个开放源码的Java持久化框架,它为Java开发者提供了一种对象关系映射工具来管理Java应用中的关系数据。本章将带你逐步走进Hibernate的世界,了解其基本概念...

    Java EE 轻量级解决方案 — SSH 青岛东合信息技术有限公司 青岛海尔软件公司 著 教材源码 _ 第六章 Hibernate核心技能

    在**第六章 Hibernate核心技能**中,我们可能涉及以下知识点: - **实体类和映射文件/注解**:理解如何定义一个Java实体类来代表数据库表,并通过XML映射文件或注解来指定其与数据库表的关系,包括主键、属性映射等...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处...

    学习hibernate的第二章

    “学习Hibernate的第二章”通常会涵盖以下核心主题: 1. **Hibernate环境配置**:在开始使用Hibernate之前,我们需要设置相关的环境,包括下载Hibernate库、添加依赖到项目中(对于Maven或Gradle项目)、配置...

    Java Web整合开发实战:基于Struts 2+Hibernate+Spring(PDF)

    Java Web整合开发实战--基于Struts 2+Hibernate+Spring....13章 探究Hibernate之核心接口 14章 Hibernate之项目实战 4篇 业务层框架Spring技术 15章 Spring快速上手 (百度网盘地址如果失效请联系我,我会补上的)

    Accp6.0 Y2 Hibernate1-2章上机练习和课后代码

    本资料集"Accp6.0 Y2 Hibernate1-2章上机练习和课后代码"是针对Accp6.0课程第二年(Y2)关于Hibernate框架的深入学习,提供了个人编写的代码实践案例。由于项目规模较大,被拆分为三个部分,这里主要讨论的是前两章...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处...

    J2EE应用实践教程 第二章代码

    在本章中,我们将深入探讨J2EE应用实践教程中的第二章代码,主要涉及Java Project、Struts2和Hibernate这三个核心技术。J2EE(Java 2 Platform, Enterprise Edition)是一个用于构建企业级应用程序的平台,它提供了...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处...

    学习hibernate第一章内容

    二、Hibernate的核心概念 1. 实体(Entity):在Hibernate中,实体代表数据库表的一行记录,通常是一个Java类,通过@Entity注解标记。 2. 对象关系映射(ORM):ORM是Hibernate的核心功能,它将Java对象转换为SQL...

    struts2与hibernate3的完美整合

    4. **缓存机制**:Hibernate提供了第一级缓存和第二级缓存,提高性能。 **Struts2与Hibernate3整合** 整合Struts2和Hibernate3的主要目标是将用户的请求转发到Action,由Action调用Service层的业务逻辑,Service层...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     2.4.1 Hibernate的核心接口  2.4.2 事件处理接口  2.4.3 Hibernate映射类型接口  2.4.4 可供扩展的接口  2.5 小结  2.6 思考题 第3章 第一个Hibernate应用  3.1 创建Hibernate的配置文件  3.2 创建持久化类...

    hibernate映射和查询

    `第二章mysql.sql` 文件可能是用于配合 Hibernate 实践的 MySQL 数据库脚本,包含了创建对应表的 SQL 语句。而 `H02` 文件名可能表示课程的第二个部分,其中可能包含更多的实践示例或扩展概念。 学习 Hibernate 的...

    使用Hibernate开发租房系统第12章课件包含代码

    9. 第二级缓存:了解Hibernate的缓存机制,特别是第二级缓存,它可以提高应用程序性能,减少对数据库的直接访问。 10. 事务管理:理解Hibernate的事务API,如Transaction接口,以及如何在业务逻辑中适当地管理事务...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    2.4.1 Hibernate的核心接口 39 2.4.2 事件处理接口 41 2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,...

    hibernate模板项目

    二、Hibernate核心概念 1. 实体(Entity):在Hibernate中,实体代表数据库中的表,通常是一个Java类,通过注解或XML配置与数据库表建立关联。 2. 映射(Mapping):对象关系映射是Hibernate的核心,通过Hibernate...

    北大青鸟Y2使用Hibernate开发租房系统8-11章全

    在这一章,你会学习如何在项目中集成Hibernate,设置hibernate.cfg.xml配置文件,以及怎样通过注解或XML文件定义实体类与数据库表之间的映射关系。实体类是业务对象的Java表示,而映射文件则是描述这些对象如何在...

    Hibernate应用开发完全手册(源代码)

    在第二章中,作者可能会详细讲解Hibernate的核心概念,包括ORM(对象关系映射)的基本理念,以及为什么在Java应用中选择Hibernate作为持久化框架。这一章会涉及如何安装和配置Hibernate,包括设置hibernate.cfg.xml...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     2.4.1 Hibernate的核心接口  2.4.2 事件处理接口  2.4.3 Hibernate映射类型接口  2.4.4 可供扩展的接口  2.5 小结  2.6 思考题 第3章 第一个Hibernate应用  3.1 创建Hibernate的配置文件  3.2 创建持久化类...

Global site tag (gtag.js) - Google Analytics