Hibernate工作原理

来源:互联网 发布:双11淘宝红包 编辑:程序博客网 时间:2024/06/09 19:01

大多数的应用程序都有数据持久化的需求,Hibernate是一个不错的选择。Hibernate不仅仅是数据持久化的一种方案,更是对象关系映射模型(ORM)的一个典型代表,拥有众多支持者,属于java程序的持久化方案的首选。



   Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用面向对象编程的思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在普通Java程序(JavaSE程序)中使用,也可以在Java Web应用程序中使用,还可以在EJB容器中使用,完成

数据持久化的任务,极大的减轻了程序员在数据层的工作。Hibernate就好像Java程序与数据库之间的一座桥梁,它提供了丰富的API供程序员使用,当程序员通过这些

API操作数据对象的时候,Hibernate会自动完成与数据库之间的数据同步,还有跨越数据库的作用。

数据库操作的基本单元是表格,而ORM技术操作的基本单元是实体对象,所以Hibernate持久化数据的处理方式又是一种全新的模式。在HibernateAPI中,有5个非常重要的接口:SessionSessionFactoryConfigurationTransactionQuery,它们同时也是Hibernate最核心的组成概念。



Session接口:Session接口负责执行被持久花对象的增、删、查、改(CRUD)操作,有点类似于JDBCCoonectionStatement,它代表了Java程序与数据库之间的一次交流。需要注意的是,Session对象是非线程安全的,一般来说,一个线程包含一个Session

注意:HibernateSession不同于Web应用中的HttpSession,它们是两种完全不相干的概念。

SessionFactory接口:是用来产生Session的工厂类,它负责为Java程序创建Session。一般来说,一个SessionFactory代表了一个数据源,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。一般情况下,一个项目通常只需要一个SessionFactory就够了。

Configuration接口:负责Hibernate的配置工作,创建SessionFactory对象。在Hibernate的启动过程中,Configuration类的实例首先定位映射文档的位置、读取配置、然后创建SessionFacatory对象。

Transaction接口:负责事务相关的操作,它代表的是Hibernate的事务,本质上也是数据库事务。Transaction是可选的,开发者也可以设计编写自己的底层事务处理代码。

Query接口:负责执行各种数据查询功能,它可以使用Hibernate特有的HQL语言和SQL语句两种方式。

以上这5API接口是几乎所有Hibernate程序都会使用到的,也是程序员使用Hibernate进行开发的基础。它们之间关系大致是这样的:首先,由Configuration获取配置信息   并做一些初始化工作;接着,通过Configuration创建SessionFactory;再通过SessionFactory创建Session;然后,程序就可以使用Session完成一般的增、删、查、改操作;如果需要使用复杂一点的查询功能,则可以通过Session获取Query,执行查询操作;如果需要使用使用Transaction,也是在Session的范围内使用。


HibernateJDBC进行了一种包装,提供了另外一套的API来操作数据。其中与数据直接打交道的组件是Session,它是Hibernate的一级缓存,保持着应用程序与数据库之间的连接,通过它来保持内存与数据库之间数据同步。Session是由SessionFactory来创建的,它代表的含义是数据源,通常是指向某个数据库。而SessionFactory是由Configuration来创建,它代表的是Hibernate程序的数据源及其相关属性的配置信息。如果需要使用事务,则可通过Session来打开、提交和回滚事务。另外,如果需要使用比较复杂的查询功能,还会使用Query接口,它也是通过Session来获得。


Hibernate的实体

实体:是Hibernate操作数据的基本单位,它对应于某个java类。实体是数据在内存中的一种表现形式,而在数据库里则是表格的行。实体可能只存在于内存,而不存在数据库中;也可能内存里的数据与数据库里的数据不一致;还有可能只在数据库中,而不在内存中。

实体,作为数据的一种装载单元,它在Hibernate的管理过程中,会不断地发生数据和状态的变化。Hibernate不仅仅是一个ORMAPI工具,它还是一个容器,它可以帮你管理实体的生命周期,这个容器就是Session的缓存。


0 0
原创粉丝点击