📅  最后修改于: 2020-11-16 06:56:21             🧑  作者: Mango
Hibernate具有分层的体系结构,可帮助用户进行操作而无需了解底层API。 Hibernate利用数据库和配置数据为应用程序提供持久性服务(和持久性对象)。
以下是Hibernate应用程序体系结构的高级视图。
以下是Hibernate Application Architecture及其重要核心类的详细视图。
Hibernate使用各种现有的Java API,例如JDBC,Java Transaction API(JTA)和Java命名与目录接口(JNDI)。 JDBC提供了关系数据库共有功能的基本抽象级,允许Hibernate支持几乎所有具有JDBC驱动程序的数据库。 JNDI和JTA允许Hibernate与J2EE应用服务器集成。
下一节将简要介绍Hibernate Application Architecture中涉及的每个类对象。
Configuration对象是您在任何Hibernate应用程序中创建的第一个Hibernate对象。通常在应用程序初始化期间仅创建一次。它表示Hibernate所需的配置或属性文件。
配置对象提供两个关键组件-
数据库连接-通过Hibernate支持的一个或多个配置文件处理。这些文件是hibernate.properties和hibernate.cfg.xml 。
类映射设置-该组件创建Java类和数据库表之间的连接。
配置对象用于创建SessionFactory对象,然后使用提供的配置文件为应用程序配置Hibernate,并允许实例化Session对象。 SessionFactory是线程安全的对象,并由应用程序的所有线程使用。
SessionFactory是一个重量级对象。它通常是在应用程序启动期间创建的,并保留以备后用。使用单独的配置文件,每个数据库将需要一个SessionFactory对象。因此,如果使用多个数据库,则必须创建多个SessionFactory对象。
会话用于获得与数据库的物理连接。 Session对象是轻量级的,旨在在每次需要与数据库进行交互时实例化。持久对象通过Session对象保存和检索。
会话对象不应长时间保持打开状态,因为它们通常不是线程安全的,因此应根据需要创建和销毁它们。
事务表示数据库的工作单元,并且大多数RDBMS支持事务功能。 Hibernate中的事务由基础事务管理器和事务(来自JDBC或JTA)处理。
这是一个可选对象,Hibernate应用程序可以选择不使用此接口,而是以自己的应用程序代码管理事务。
查询对象使用SQL或休眠查询语言(HQL)字符串从数据库中检索数据并创建对象。 Query实例用于绑定查询参数,限制查询返回的结果数,并最终执行查询。
条件对象用于创建和执行面向对象的条件查询以检索对象。