Hibernate架构是分层的,作为数据访问层,开发人员不必知道底层API。Hibernate使用数据库以及配置数据库来为应用程序提供持续性服务。
下面是一个Hibernate应用程序架构视图:
下面是一个详细的Hibernate应用程序体现架构视图以及一些重要类:
Hibernate使用不同的现存Java API,比如JDBC,Java事务API(JTA),以及Java命名和目录界面(JNDI)。JDBC提供了一个抽象级别的通用关系数据库的功能,Hibernate几乎支持所有的JDBC驱动。
Hibernate应用程序架构涉及的配置文件
1、hibernate.cfg.xml/hibernate.properties
Hibernate全局配置文件,主要包括三种组件:
- 数据库连接:
<property name="connection.username">root</property> - 类映射配置:
<mapping resource="com/pang/hibernate/domain/Person.hbm.xml" /> - 其他配置:
<property name="hbm2ddl.auto">update</property>
2、~.hbm.xml
Hibernate映射文件,主要作用:
- Java类与数据库表之间的映射
<class name="com.pang.hibernate.domain.Person" table="person"> - Java类的字段与数据库表的字段之间映射
- Java类的字段类型与数据库表字段类型之间的映射
<id name="pid" column="pid" length="20" type="java.lang.Long"><property name="pname" column="pname" length="100" type="java.lang.String"></property>
Hibernate应用程序架构涉及的每一个类对象
Configurtion
配置对象是在创建Hibernate应用程序时创建的第一个Hibernate对象,并且经常只在应用程序初始化期间创建。代表Hibernate所需要一个配置或者属性文件。配置对象提供几种基本组件:
- 数据库连接:有Hibernate支持的一个或者多个配置文件处理。这些文件是hibernate.properties或者hibernate.cfg.xml
- 类映射设置:这个组件创建了Java类和数据库表格之间的联系。
SessionFactory
Configuration对象被用于创建一个SessionFactory对象,使用提供的配置文件为应用程序依次配置Hibernate,并允许实例化一个回话对象。SessionFactory是一个线程安全对象并被应用程序所有的对象使用。
SessionFactory是一个重量级对象,通常在应用程序启动时创建然后留存为以后使用。每一个数据库需要一个SessionFactory对象使用一个单独的配置文件。所以若果使用多数据库时要创建多种SessionFactory对象。
Session
一个回话被用于与数据库的物理连接。Session对象时轻量级的,并被设计为每次实例化都需要与数据库交互、持久对象通过Session对象保存和检索。
Session对象不应该长时间保持开启转态,因为它们通常情况下不是线程安全的,并且它们应该按照所需创建和销毁。
Transaction
一个事务代表了与数据库工作的一个单元并且大部分RDBMS支持事务功能。在Hibernate中事务由底层事务管理器处理
Query
Query使用SQL或者HQL查询语言,在数据库中检索数据并创建对象。一个查询的实例被用于连接查询参数,限制有查询返回的结果数量,并最终执行查询。
Criteria
Criteria对象被用于创建和执行面向规则查询的对象来检索对象。