Hibernate的分层使得你从必须知道相应的APIs中解脱出来。Hibernate使用数据库和配置文件来提供持久化服务。
以下是Hibernate应用框架的一个高级别视图。
以下是一个包含少量重要核心类的Hibernate应用框架的详细视图。
Hibernate使用各种存在的JAVA APIs,像JDBC,JAVA Transaction API(JTA),和JAVA Naming and Directory interface(JNDI)。JDBC对关系型数据库的通用功能提供了一个原始级别的抽象。Hibernate几乎支持所有带JDBC驱动的数据库。JNDI和JTA可以集成到J2EE应用服务中。
对于Hibernate应用框架中涉及到的每一个类对象,以下部分给出了简单的介绍。
Configuration Object
Configuration Object是你在任何一个Hibernate应用中用到的第一个Hibernate对象,通常,它仅仅创建一次,且在应用初始化时。它通常以Hibernate要求的配置(Configuration)和属性(Properties)文件出现。Configuration Object提供两个键组件:
Database Connection:通过一个或多个Hibernate支持的配置文件处理。这些文件是hibernate.properties和hibernate.cfg.xml。
Class Mapping Setup:
这个组件创建JAVA类与数据表之间的连接。
SessionFactory Object
SessionFactory对象由Configuraton Object创建,通过使用支持的配置文件来配置Hibernate,允许实例化一个Session 对象。SessionFactory是一个线程安全对象,能被一个应用的所有线程使用。
SessionFactory是一个重量级的对象,因此,它在应用启动时创建,且保留供以后使用。每个数据库需要一个SessionFactory对象。因此,如果你正在使用多个数据库,那么,你需要创建多个SessionFactory对象。
Session Object
一个Session表示得到了一个与数据库的物理连接。Session对象是轻量级的,被设计成每次与数据库交互需要时再实例化。持久化对象的存储与检索都是通过Session对象。
Session对象不应该长时间保留,因为他们通常不需要线程安全,他们应该在合适的时候进行创建和销毁。
Transaction Object
一个事务代表数据库的一个工作单元,大多数RDBMS支持事务功能。在Hibernate中,事务由JDBC或JTA的事务管理和事务进行处理。
这是一个可选对象,Hibernate应用可能不会使用这个接口,而宁愿自己在应用中写代码来管理事务。
Query Object
Query Object使用SQL或Hibernate Query Language(HQL)字符串从数据库中检索数据并创建对象。一个Query实例往往绑定一些查询参数,来限制查询结果的数量,最后执行查询。
Criteria Object
Criteria Object用于创建和执行面向准则的查询对象来检索对象。
本文翻译自:http://www.tutorialspoint.com/hibernate/hibernate_architecture.htm