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映射文件可以使用querysql-query元素定義Hibernate命名查詢,或者通過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,但EHCache更受欢迎,因为它易于集成并支持所有Hibernate缓存策略。本教程提供了一个完整的示例,介绍了如何将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 logging,但 log4j 是最流行的日誌框架。快速教程解釋了如何將 log4j 日誌整合到 Hibernate 框架中。
  15. Hibernate Tomcat JNDI DataSource 示例 大多數情況下,Hibernate 框架用於在 Tomcat 或其他 servlet 容器中運行的 Web 應用程序。Hibernate 可以使用在容器中定義的 JNDI 資源作為數據庫連接,這是使用連接池由 servlet 容器處理數據庫連接的首選方法。
  16. Spring Hibernate 整合 Spring 是最常用的 Java EE 框架之一,Hibernate 是最流行的 ORM 框架。這就是為什麼在企業應用程序中經常使用 Spring Hibernate 組合的原因。本教程使用 Spring 4,並將其與 Hibernate 3 整合,然後將同一項目升級為使用 Hibernate 4。
  17. Spring MVC Hibernate Example 本教程向前推进,解释了如何将Hibernate与Spring MVC集成,并使用Spring声明性事务管理,而不是使用Hibernate事务管理。
  18. Struts2 Hibernate Integration Example 本教程解释了通过使用ServletContextLister将Hibernate集成到任何Web应用程序的一般方法,示例是使用Struts2与Hibernate,但在幕后,集成仅使用Servlet技术完成。这与Spring集成不同,因为Struts2不提供任何内置支持来集成Hibernate。
  19. Hibernate Validator Example 数据验证是任何应用程序的一个组成部分。这是一个横切任务,发生在表示层、业务层以及持久层。这就是为什么JSR-303提供了基于注解的标准,用于为Java Bean属性应用验证。Hibernate Validator支持JSR-303,本教程展示了它在一个简单示例中的使用。
  20. Hibernate Tools Eclipse Plugin如果您曾经在Hibernate项目上工作过,那么您一定熟悉我们在Hibernate映射和配置文件中需要的许多属性。如果没有任何可以指导我们查找正确属性的合适工具,那么正确配置我们的应用程序将变得非常困难。这就是Hibernate Tools 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: 沒有配置 CurrentSessionContext
  5. Hibernate 程式未終止
  6. 未設定 ‘hibernate.dialect’ 時,DialectResolutionInfo 存取不能為空

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