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 Annotations实现一对多映射。Hibernate 多对多映射多对多映射通常是使用联接表在数据库中实现的,例如,我们可以具有Cart和Item表以及Cart_Items表进行多对多映射。
每个购物车可以有多个商品,每个商品可以是多个购物车的一部分,因此我们在这里有多对多映射。
本教程介绍了Hibernate 的多对多单向和双向映射。Hibernate查询语言(HQL)Hibernate Framework随附了功能强大的面向对象的查询语言– Hibernate查询语言(HQL)。
它与SQL非常相似,不同之处在于我们使用对象而不是表名,这使其更接近于面向对象的编程。
本文介绍了有关HQL和HQL语言支持的不同子句。Hibernate本机SQL查询Hibernate提供的选项可通过使用SQLQuery对象执行本机SQL查询。
当我们要执行Hibernate API不支持的特定于数据库的查询(例如查询提示或者Oracle数据库中的CONNECT关键字)时,这非常方便。Hibernate命名查询如果有很多HQL或者本机SQL查询,则它们将导致代码混乱,因为所有查询都将分散在整个项目中。
因此,Hibernate提供了命名查询,我们可以在中央位置定义该命名查询并在代码中的任何位置使用它们。
我们可以为HQL和本机SQL创建命名查询。
可以使用" query"或者" sql-query"元素或者通过使用JPA批注@NamedQuery和@NamedNativeQuery在Hibernate映射文件中定义Hibernate命名查询。Hibernate Criteria Hibernate提供的Criteria API更面向对象,用于查询数据库和获取结果。
我们无法使用条件来运行更新或者删除查询或者任何DDL语句。
它仅用于使用面向对象的方法从数据库中获取结果。
Criteria API的一些常见用法是Projection,我们可以将其用于聚合函数,例如sum(),min(),max()等,ProjectionList仅用于获取选定的列,对结果进行排序等。如果正确使用Hibernate一级缓存,Hibernate Cache对于获得快速的应用程序性能可能非常有用。
缓存背后的想法是减少数据库查询的数量,从而减少应用程序的吞吐时间。
Hibernate 一级缓存与Session对象关联。
默认情况下,Hibernate一级缓存处于启用状态,无法禁用它。
但是,hibernate提供了一些方法,通过这些方法,我们可以从缓存中删除选定的对象或者完全清除缓存。
会话中缓存的任何对象对其他会话都不可见,并且在关闭会话时,所有缓存的对象也将丢失。
具有EHCache的Hibernate Second Level缓存Hibernate Second Level缓存提供程序包括EHCache和Infinispan,但是EHCache更为流行,因为它易于集成并支持所有的Hibernate缓存策略。
本教程提供了将EHCache与Hibernate框架集成的完整示例。Hibernate获取与加载Hibernate Session提供了不同的方法来从数据库中获取数据。
其中两个是– get()和load()。
这些方法还有很多重载方法,我们可以在不同情况下使用。
乍一看,get()和load()看起来都很相似,因为它们都从数据库中获取数据。
但是它们之间几乎没有区别,本教程通过示例代码对其进行了解释。Hibernate保存与持久Hibernate Session是Java应用程序与hibernate框架之间的接口。
本教程介绍了会话中用于保存和更新表中数据的重要方法-保存,保存或者更新,持久保存,更新和合并。Hibernate openSession vs 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资源的DataSource,这是让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框架相关的大多数重要问题,并提供详细的答案。
您应在面试之前仔细阅读这些内容,以掌握知识。
Hibernate教程–常见错误修复
- 如何配置hibernate.cfg.xml以脱机工作
- org.hibernate.AnnotationException:未为实体类指定标识符
- org.hibernate.HibernateException:没有有效的事务,get无效
- org.hibernate.HibernateException:未配置CurrentSessionContext
- Hibernate 程序未终止
- 未设置" hibernate.dialect"时,对DialectResolutionInfo的访问不能为空