Hibernate 简明教程
Hibernate - Architecture
Hibernate 具有分层架构,它帮助用户在不知道底层 API 的情况下进行操作。Hibernate 利用数据库和配置数据向应用程序提供持久性服务(和持久性对象)。
以下是 Hibernate 应用程序架构的高级视图。
以下是对 Hibernate 应用程序架构及其重要核心类的详细视图。
Hibernate 使用各种现有的 Java API,如 JDBC、Java 事务 API(JTA)、Java 命名和目录接口 (JNDI)。JDBC 提供对关系数据库通用功能的初级抽象,使几乎任何带有 JDBC 驱动的数据库都可以受 Hibernate 支持。JNDI 和 JTA 允许 Hibernate 与 J2EE 应用程序服务器集成。
以下部分简要描述了 Hibernate 应用程序架构中涉及的每个类对象。
Configuration Object
Configuration 对象是您在任何 Hibernate 应用程序中创建的第一个 Hibernate 对象。它通常仅在应用程序初始化期间创建一次。它表示 Hibernate 所需的配置或属性文件。
Configuration 对象提供两个键组件:
-
Database Connection - 由 Hibernate 支持的一个或多个配置文件处理。这些文件为 hibernate.properties 和 hibernate.cfg.xml 。
-
Class Mapping Setup - 此组件创建 Java 类和数据库表之间的连接。
SessionFactory Object
SessionFactory 对象使用提供的配置文件为应用程序配置 Hibernate,并允许实例化 Session 对象。SessionFactory 是一个线程安全对象,并且被应用程序的所有线程使用。
SessionFactory 是一个重量级对象;它通常在应用程序启动期间创建并保留以便以后使用。您需要为使用独立配置文件的每个数据库创建一个 SessionFactory 对象。因此,如果您要使用多个数据库,则需要创建多个 SessionFactory 对象。
Session Object
使用会话来与数据库获得物理连接。会话对象是轻量的,并且设计为在需要与数据库进行交互时进行实例化。持久性对象通过会话对象保存并检索。
会话对象不应长期保持打开状态,因为它们通常不是线程安全的,并且应根据需要创建并销毁它们。
Transaction Object
事务代表与数据库的工作单元,并且大多数 RDBMS 都支持事务功能。Hibernate 中的事务由底层事务管理器和事务(来自 JDBC 或 JTA)处理。
这是一个可选对象,Hibernate 应用程序可以选择不使用此接口,而是在其自己的应用程序代码中管理事务。
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();
// Create the SessionFactory Instance
SessionFactory factory = meta.getSessionFactoryBuilder().build();
// Create the session
Session session = factory.openSession();
// Create the transaction
Transaction t = session.beginTransaction();