Hibernate教程
Hibernate,由Gavin King创建,被称为Java开发人员的最佳和主导对象/关系持久性(ORM)工具(现在支持.NET)。它提供了许多优雅和创新的方法来简化Java中的关系数据库处理任务。
Hibernate在许多方面都很出色,但它需要适当地使用。在本教程中,它提供了许多有关使用Hibernate3的分步示例和说明。
PS教程更新为Hibernate v3.6.1.Final。
本教程的学习会涉及英文文章,使用翻译插件即可愉快学习^_^
Hibernate快速入门
Hello World示例体验Hibernate框架。
- Maven 2 + Hibernate 3.2.3 + MySQL 5.0示例(XML Mapping)
Hibernate 3.2.3示例在MySQL数据库中,具有经典的hbm映射。 - Maven 2 + Hibernate 3.2.3 + MySQL 5.0示例(注释)
Hibernate 3.2.3在MySQL数据库中的示例,带有Hibernate / JPA注释。 - Maven 3 + Hibernate 3.6.3 + Oracle 11g示例(XML Mapping)
Oracle数据库中的Hibernate 3.6示例,具有经典的hbm映射。 - Maven 3 + Hibernate 3.6.3 + Oracle 11g示例(注释)
Oracle数据库中的Hibernate 3.6示例,带有Hibernate / JPA注释。
Hibernate Association(表关系)
如何在Hibernate中一对一,一对多,多对多地定义表关系。
- 一对一示例(XML Mapping)
Hibernate使用hbm映射文件的一对一示例。 - 一对一示例(注释)
使用注释代码一对一地休眠。 - 一对多示例(XML Mapping)
Hibernate使用hbm映射文件的一对多示例。 - 一对多示例(注释)
使用注释代码对一对多示例进行休眠。 - 多对多示例(XML Mapping)
Hibernate使用hbm映射文件进行多对多示例(连接表中没有额外的列)。 - 多对多示例(注释)
Hibernate带有注释代码的多对多示例(连接表中没有额外的列)。 - 多对多示例 - 连接表+额外列(注释)
Hibernate带有注释代码的多对多示例(使用连接表中的额外列)。 - 关闭主题:理解反向键工作,示例和解释
“反向”是Hibernate中最令人困惑的关键字,但您必须清楚地理解这一点,以便微调您的关系性能。
Hibernate / JBoss Tools + Eclipse IDE
学习如何使用Hibernate工具是必须的!
- 在Eclipse IDE中安装Hibernate / JBoss工具在Eclipse IDE中
安装Hibernate。 - 使用Hibernate Tools生成Hibernate映射文件和注释
自动为您生成Hibernate代码。
Hibernate日志记录
如何登录Hibernate
- 在Hibernate中配置日志记录 -
SLF4j + Log4j使用Hibernate集成SLF4j + Log4j。 - 在Hibernate中配置日志记录 -
Logback使用Hibernate集成Logback。
Hibernate连接池
如何在Hibernate中配置数据库连接池
- 在Hibernate中配置C3P0连接池使用Hibernate
集成C3P0。 - 在Hibernate中配置DBCP连接池使用Hibernate
集成Apache DBCP。
Hibernate Cascade
Hibernate级联用于自动管理另一方的状态。
- 级联示例(保存,更新,删除和删除孤立)
保存,更新,删除和删除孤立的级联示例。删除和删除孤儿之间的区别。 - 级联和反向之间的差异
许多Hibernate开发人员对级联和反向之间的差异感到困惑,这里是解释。 - Cascade - JPA和Hibernate注释常见错误
由初学者或经验丰富的Hibernate开发人员制作的一个超级简单的常见注释错误 - 在Hibernate中的JPA级联注释?
Hibernate查询语言(HQL)
Hibernate自己的语言用于数据操作,它与数据库SQL语言非常相似。
- Hibernate查询示例(HQL)
HQL CRUD示例,选择,更新,删除和批量插入(没有单个插入支持)。 - Hibernate参数绑定示例
使用“命名参数”和“位置参数”方法将参数绑定到HQL。 - 如何在Hibernate查询中嵌入Oracle提示将Oracle提示
嵌入到Hibernate Query中以增加Oracle查询性能的技巧。
休眠标准
Hibernate Criteria API是Hibernate查询语言(HQL)的替代品。在许多可选搜索条件中,它始终是一个很好的解决方案。
- Hibernate Criteria示例
Criteria示例 - 基本查询,排序查询,限制查询和分页结果。
Hibernate Native SQL
在某些情况下,Hibernate HQL或Criteria不足以完成您想要的操作,在这里您可以直接使用本机数据库SQL语言。
- Hibernate本机SQL查询示例
显示如何在Hibernate中使用本机SQL的指南。
Hibernate命名查询
命名查询允许开发人员将HQL放入XML映射文件或注释中以实现可维护性,您只是不希望所有的HQL语法都分散在Java代码中。:)
- Hibernate命名查询示例
在XML文件和Annotation中使用命名查询。
Hibernate Transaction
所有与Hibernate Transaction相关的东西
- Hibernate Transaction handle示例
使用Hibernate事务的简单标准示例。
Hibernate Advance技术
一些Hibernate Advance技术,很少使用但实用技能(数据过滤器和拦截器)。
- Hibernate数据过滤器示例 - XML和注释
Hibernate数据过滤器用于过滤数据库中的检索数据,这是一个使用XML或Annotation中的数据过滤器的指南。 - Hibernate拦截器示例 - 审计日志
Hibernate拦截器用于拦截像CRUD操作这样的Hibernate事件,这是Hibernate拦截器审计日志实现的一个详细示例。
Hibernate性能
一些调整将使你的Hibernate运行得更快:)
- dynamic-insert属性示例
使用dynamic-insert来避免SQL INSERT语句中包含未修改的属性。 - dynamic-update属性示例
使用dynamic-insert来避免SQL UPDATE语句中包含未修改的属性。 - Hibernate可变示例(类和集合)
使用mutable关键字来避免生成不必要的SQL语句。 - Hibernate - 获取策略示例
Hibernate获取策略用于优化Hibernate生成的select语句,这是任何Hibernate开发人员必须学习的技能。 - session.get()和session.load()之间有所不同
了解何时应该使用get或load来检索对象以避免不必要的数据库命中。
将Hibernate与其他框架集成
将Hibernate与其他框架集成的示例。
- Struts + Hibernate集成
示例将Hibernate与Struts框架集成。 - Struts + Spring + Hibernate集成
示例将Hibernate与Struts和Spring框架集成在一起。 - Spring + Hibernate Integration
将Hibernate与Spring框架集成的示例。 - Spring + Hibernate Integration(Annotation)
将Hibernate与Spring框架(Annotation版本)集成的示例。
Hibernate FAQ
一些常见的回答问题:
- 如何从不同的目录加载hibernate.cfg.xml
默认情况下,Hibernate在项目类路径中查看hibernate.cfg.xml,这是从指定文件夹加载它的指南。 - 如何以编程方式添加Hibernate XML映射文件(hbm.xml)以编程
方式加载hibernate.cfg.xml的提示 - Hibernate数据库方言
列表不同类型数据库供应商的方言集合列表。 - show_sql,format_sql和use_sql_comments
配置Hibernate以将生成的SQL语句显示到控制台。 - 如何显示hibernate sql参数值--P6Spy
使用P6Sqpy第三方库来显示Hibernate SQL参数值。 - 如何显示hibernate sql参数值 - Log4j
使用Log4j显示Hibernate SQL参数值。 - 如何在Hibernate中调用存储过程
不建议将业务逻辑放入存储过程中,没关系,您仍然允许在Hibernate中调用存储过程。 - 如何在Hibernate中使用数据库保留关键字
在某些特殊情况下,您可能需要在Hibernate类中使用database关键字(不推荐),这是实现它的技巧。 - 如何将图像保存到数据库中
教程如何使用Hibernate将图像保存到数据库中。
Hibernate常见错误
以下是Hibernate开发中的常见错误消息列表。
- 如果列名为关键字,则无法插入,例如DESC
- Hibernate - 找不到C3P0ConnectionProvider
- Hibernate - 不推荐使用AnnotationConfiguration类型
- java.lang.ClassNotFoundException:javassist.util.proxy.MethodFilter
- 请记住,序数参数是基于1的! - 休眠模板
- org.hibernate.AnnotationException:未知的Id.generator
- 需要使用AnnotationConfiguration实例
- java.lang.NoClassDefFoundError:org / dom4j / DocumentException
- java.lang.NoClassDefFoundError:org / apache / commons / logging / LogFactory
- java.lang.NoClassDefFoundError:org / apache / commons / collections / SequencedHashMap
- java.lang.NoClassDefFoundError:net / sf / cglib / proxy / CallbackFilter
- java.lang.NoClassDefFoundError:com / mchange / v2 / c3p0 / DataSources
- java.lang.NoClassDefFoundError:org / hibernate / annotations / common / reflection / ReflectionManager
- java.lang.NoClassDefFoundError:antlr / ANTLRException
- java.lang.NoClassDefFoundError:javax / transaction / Synchronization
- java.lang.ClassFormatError:在类文件中不是本机或抽象的方法中的Absent Code属性...
- java.lang.NoSuchMethodError:org.objectweb.asm.ClassWriter
- java.lang.ClassNotFoundException:javax.persistence.Entity
- java.lang.ClassNotFoundException:javax.transaction.TransactionManager
- java.lang.ClassFormatError:在类文件中不是本机或抽象的方法中的Absent Code属性...
无关
- 为什么我为我的项目选择Hibernate框架?
我想在未来的项目中实现Hibernate的原因。
Hibernate参考
作者 mkyong
Mkyong.com的 创始人,喜欢Java和开源的东西。在Twitter上关注他,或在Facebook或Google Plus上与他交朋友。如果您喜欢我的教程,请考虑向这些慈善机构捐款[推荐 包括联合国儿童基金会 无国界医生]。
本文出翻译自:http://www.mkyong.com/tutorials/hibernate-tutorials/
转载请备注作者和出处