深入理解Hibernate教程

最近我写了很多关于Hibernate的教程。Hibernate 是当前市场上最好的Java ORM工具之一。因此,这篇文章就像是所有Hibernate教程和示例的索引。您可以按顺序阅读这些Hibernate教程,从零开始学习Hibernate。我可能会在列表中添加更多的Hibernate教程,所以您可能想要将其加入书签,并定期检查。

Hibernate教程

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

Hibernate教程 – 常见错误修复

  1. 如何配置hibernate.cfg.xml以离线工作
  2. org.hibernate.AnnotationException: 未为实体类指定标识符
  3. org.hibernate.HibernateException: 在没有活动事务的情况下,get 操作无效
  4. org.hibernate.HibernateException: 未配置当前会话上下文
  5. Hibernate程序未正常终止
  6. 在未设置 ‘hibernate.dialect’ 时,无法将 DialectResolutionInfo 的访问权限设置为 null

Source:
https://www.digitalocean.com/community/tutorials/hibernate-tutorial