Hibernate 教程
最近我写了很多 Hibernate 教程。Hibernate是目前市场上最好的 Java ORM 工具之一。所以这篇文章就像是 Hibernate 教程和示例的所有文章的索引。您可以按顺序浏览这些 Hibernate 教程,从头开始学习 Hibernate。很可能我会将更多 Hibernate 教程添加到列表中,因此您可能希望将其添加到书签中并偶尔查看。
Hibernate 教程
- Hibernate 初学者教程Hibernate 支持 JPA 注释,并且非常灵活。我们可以使用 XML、属性文件以及以编程方式对其进行配置。本教程是开始使用 Hibernate 框架的好方法。本教程重点介绍 Hibernate 所需的不同配置,并提供基于简单 XML 的映射以及基于 JPA 注释的映射的示例。您还将学习初始化
SessionFactory
Hibernate 框架的不同方法和重要组件。 - Hibernate 一对一映射大多数情况下,数据库表是相互关联的。关联形式有很多种——广义上是一对一、一对多和多对多,可进一步分为单向和双向映射。本教程将指导您使用 XML 配置以及使用 JPA 注释配置实现 Hibernate 一对一映射。
- Hibernate 一对多映射简单来说,一对多映射意味着一个表中的一行可以映射到另一个表中的多行。例如,想象一个购物车系统,其中我们有另一个用于存放物品的表。一个购物车可以有多个物品,所以这里我们有一对多映射。在本教程中,您将学习如何使用基于 XML 的配置实现一对多映射,然后使用 Hibernate 注释。
- Hibernate 多对多映射多对多映射通常使用连接表在数据库中实现,例如,我们可以有 Cart and Item 表和 Cart_Items 表用于多对多映射。每个购物车可以有多个商品,每个商品可以是多个购物车的一部分,因此我们在这里有一个多对多映射。本教程介绍了 Hibernate 多对多单向和双向映射。
- Hibernate 查询语言 (HQL) Hibernate 框架附带一种强大的面向对象查询语言 - Hibernate 查询语言 (HQL)。它与 SQL 非常相似,只是我们使用对象而不是表名,这使得它更接近面向对象编程。本文介绍了 HQL 以及 HQL 语言支持的不同子句。
- Hibernate 本机 SQL 查询Hibernate 提供通过使用 SQLQuery 对象执行本机 SQL 查询的选项。当我们想要执行 Hibernate API 不支持的数据库特定查询(例如查询提示或 Oracle 数据库中的 CONNECT 关键字)时,这非常方便。
- Hibernate 命名查询如果有大量 HQL 或 Native SQL 查询,那么它们将导致代码混乱,因为所有查询将分散在整个项目中。这就是为什么 Hibernate 提供命名查询,我们可以在中心位置定义并在代码中的任何位置使用它们。我们可以为 HQL 和 Native SQL 创建命名查询。Hibernate 命名查询可以在 Hibernate 映射文件中使用
query
或sql-query
元素或通过使用 JPA 注释@NamedQuery和@NamedNativeQuery来定义。 - Hibernate Criteria Hibernate 提供了更加面向对象的 Criteria API,用于查询数据库并获取结果。我们不能使用 Criteria 来运行更新或删除查询或任何 DDL 语句。它仅用于使用更加面向对象的方法从数据库获取结果。Criteria API 的一些常见用法是 Projection,我们可以将其用于聚合函数,例如 sum()、min()、max() 等,ProjectionList 仅用于获取选定的列,对结果进行排序等。
- Hibernate 一级缓存如果使用得当,Hibernate 缓存对于提高应用程序性能非常有用。缓存背后的想法是减少数据库查询的数量,从而减少应用程序的吞吐时间。Hibernate 一级缓存与 Session 对象相关联。默认情况下启用 Hibernate 一级缓存,无法禁用它。但是,Hibernate 提供了一些方法,通过这些方法我们可以从缓存中删除选定的对象或完全清除缓存。会话中缓存的任何对象对其他会话都是不可见的,并且当会话关闭时,所有缓存的对象也将丢失。
- Hibernate 二级缓存与 EHCache Hibernate 二级缓存提供商包括 EHCache 和 Infinispan,但 EHCache 更受欢迎,因为它易于集成并支持所有 Hibernate 缓存策略。本教程提供了一个将 EHCache 与 Hibernate 框架集成的完整示例。
- Hibernate get vs load Hibernate Session 提供不同的方法来从数据库获取数据。其中两种是 – get() 和 load()。这些方法还有许多重载方法,我们可以在不同情况下使用它们。乍一看,get() 和 load() 似乎相似,因为它们都从数据库获取数据。然而,它们之间有一些区别,本教程将通过示例代码对它们进行解释。
- Hibernate 保存与持久化Hibernate Session 是 Java 应用程序与 Hibernate 框架之间的接口。本教程介绍了 Session 中用于保存和更新表中数据的重要方法 - save、saveOrUpdate、persist、update 和 merge。
- Hibernate openSession 与 getCurrentSession Hibernate SessionFactory 是工厂类,我们通过它获取会话并执行数据库操作。Hibernate SessionFactory 提供了三种方法,我们可以通过它们获取 Session 对象 - getCurrentSession()、openSession() 和 openStatelessSession()。本教程通过示例代码解释了每个方法。
- Hibernate log4j 集成Hibernate 4 使用 JBoss 日志记录,但 log4j 是最流行的日志记录框架。快速教程解释了如何将 log4j 日志记录与 Hibernate 框架集成。
- Hibernate Tomcat JNDI 数据源示例大多数情况下,Hibernate 框架用于在 Tomcat 或任何其他 servlet 容器中运行的 Web 应用程序。Hibernate 可以使用容器中定义为 JNDI 资源的数据源,这是让 servlet 容器使用连接池处理数据库连接的首选方法。
- Spring Hibernate 集成Spring 是最常用的 Java EE 框架之一,而 Hibernate 是最流行的 ORM 框架。这就是为什么 Spring Hibernate 组合在企业应用程序中被大量使用的原因。本教程使用 Spring 4 并将其与 Hibernate 3 集成,然后更新同一项目以使用 Hibernate 4。
- Spring MVC Hibernate 示例本教程将继续讲解如何将 Hibernate 与 Spring MVC 集成并使用 Spring 声明式事务管理,而不是使用 Hibernate 事务管理。
- Struts2 Hibernate 集成示例本教程解释了通过使用 ServletContextLister 将 Hibernate 与任何 Web 应用程序集成的一般方法,示例使用 Struts2 与 Hibernate 进行集成,但后台集成仅使用 Servlet 技术完成。这与 Spring 集成不同,因为 Struts2 不提供任何内置的 Hibernate 集成支持。
- Hibernate Validator 示例数据验证是任何应用程序不可或缺的一部分。这是一项横切任务,发生在表示层、业务层以及持久层。这就是为什么 JSR-303 提供基于注释的标准来应用对 Java bean 属性的验证。Hibernate Validator 提供对 JSR-303 的支持,本教程通过一个简单的示例展示了它的用法。
- Hibernate Tools Eclipse 插件如果您曾经参与过 Hibernate 项目,那么您一定对 Hibernate 映射和配置文件所需的许多属性非常熟悉。如果没有任何合适的工具可以指导我们查找正确的属性,那么正确配置应用程序将变得非常困难。这时Hibernate Tools Eclipse 插件就派上用场了,它是 Hibernate 项目的必备插件。
- Hibernate 面试问题熟悉 Hibernate 框架是 Java 面试的加分项,这就是我写这篇文章的原因。它包含与 Hibernate 框架相关的大多数重要问题以及详细答案。您应该在参加面试之前阅读这些内容以巩固您的知识。