休眠架构
先决条件: Hibernate 的介绍
Hibernate: Hibernate 是一个框架,用于开发独立于数据库软件的持久性逻辑。在 JDBC 中开发持久性逻辑,我们处理原始类型。而 Hibernate 框架我们使用对象来开发独立于数据库软件的持久性逻辑。
休眠架构:
配置:
- Configuration 是一个存在于 org.hibernate.cfg 包中的类。它激活 Hibernate 框架。它读取配置文件和映射文件。
It activate Hibernate Framework Configuration cfg=new Configuration(); It read both cfg file and mapping files cfg.configure();
- 它检查配置文件在语法上是否正确。
- 如果配置文件无效,则会抛出异常。如果它是有效的,那么它会在内存中创建一个元数据并将元数据返回给对象以表示配置文件。
会话工厂:
- SessionFactory 是一个存在于 org.hibernate 包中的接口,用于创建会话对象。
- 它本质上是不可变的和线程安全的。
buildSessionFactory() method gathers the meta-data which is in the cfg Object. From cfg object it takes the JDBC information and create a JDBC Connection. SessionFactory factory=cfg.buildSessionFactory();
会议:
- Session 是一个存在于 org.hibernate 包中的接口。 Session 对象是基于 SessionFactory 对象即工厂创建的。
- 它通过 Hibernate Framework 打开 Connection/Session with Database 软件。
- 它是一个轻量级的对象,它不是线程安全的。
- 会话对象用于执行 CRUD 操作。
Session session=factory.buildSession();
交易:
- 每当我们执行任何操作时都会使用事务对象,并且基于该操作,数据库会发生一些变化。
- 事务对象用于向数据库发出指令,以通过使用 commit() 方法将因操作而发生的更改作为永久对象。
Transaction tx=session.beginTransaction(); tx.commit();
询问:
- Query 是一个存在于 org.hibernate 包中的接口。
- 通过调用 Session.createQuery() 获得一个 Query 实例。
- 这个接口暴露了一些超出 Session.iterate() 和 Session.find() 提供的额外功能:
- 可以通过调用 setMaxResults()、setFirstResult() 来选择结果集的特定页面。
- 可以使用命名的查询参数。
Query query=session.createQuery();
标准:
- Criteria 是一个简化的 API,用于通过组合 Criterion 对象来检索实体。
- Session 是 Criteria 的工厂。 Criterion 实例通常通过 Restrictions 上的工厂方法获得。
Criteria criteria=session.createCriteria();
在 Hibernate Framework 中运行期间的工作流程:
假设我们要向数据库中插入一个对象。这里的 Object 只不过是我们在Java程序上编写并创建该程序的对象的持久性逻辑。如果我们想将该对象插入数据库中,或者我们想从数据库中检索该对象。现在的问题是休眠如何将对象保存到数据库或从数据库中检索对象。 Hibernate 框架通过几个层来实现上述任务。让我们在执行操作期间了解 Hibernate 框架的层/流程:
第一阶段:在第一阶段,我们将编写持久化逻辑,借助 Hibernate 配置文件和 Hibernate 映射文件对数据库执行一些特定的操作。之后,我们创建了一个特定类的对象,我们在其上编写了持久性逻辑。
第二阶段:在第二阶段,我们包含持久化逻辑的类将与hibernate框架进行交互,其中hibernate框架提供了一些抽象来执行一些任务。现在到这里Java类的图片就结束了。现在 Hibernate 负责在 Hibernate 框架下面的层的帮助下执行持久化逻辑,或者我们可以说这些层是 Hibernate 的内部实现。
第三阶段:在第三阶段,我们的休眠框架交互 JDBC、JNDI、JTA 等到数据库执行该持久性逻辑。
第四和第五阶段:在第四和第五阶段,hibernate 是在 JDBC 驱动的帮助下与数据库交互的。现在在这里 hibernate 执行持久化逻辑,这不过是CRUD操作。如果我们的持久性逻辑是检索一条记录,那么它将以相反的顺序显示在我们的Java程序的控制台上,以 Object.