Hibernate API权威中文手册指南

4星 · 超过85%的资源 需积分: 9 188 下载量 41 浏览量 更新于2025-03-24 8 收藏 7.68MB RAR 举报
Hibernate 是一个开源的对象关系映射(Object Relational Mapping,简称ORM)框架,用于在 Java 环境中将数据库中的表映射为对象,使 Java 程序员能够以面向对象的方式来操作数据库。Hibernate API 中文文档是为开发者提供的一份指南,详细说明了如何使用 Hibernate 框架进行数据持久化操作。 Hibernate API 的核心概念包括: 1. Session:这是 Hibernate 框架与数据库交互的最主要接口,它代表与数据库的一个“工作单元”。可以创建、查询、保存、更新和删除持久化对象。在 Session 接口里,定义了加载数据、保存数据、更新数据、删除数据以及执行 HQL(Hibernate Query Language)和原生 SQL 查询的方法。 2. SessionFactory:这是一个线程安全的工厂类,用于初始化 Hibernate。它负责读取配置文件(hibernate.cfg.xml),构建 Session 对象,以及为应用缓存映射元数据。通常一个应用只需要一个 SessionFactory 实例。 3. Transaction:Hibernate 中所有的数据操作都封装在事务(Transaction)中。Transaction 接口允许应用控制事务的边界,并管理事务的提交和回滚。 4. Query:提供了操作数据库的功能,可以执行查询和执行更新操作。Query 接口支持 HQL 和原生 SQL 查询,通过它可以实现复杂的数据检索。 5. Criteria:这是 Hibernate 的一个面向对象的查询接口,它允许开发者以编程方式创建查询,而不需要写 HQL 或 SQL 语句。Criteria 查询提供了一种安全、类型安全且易于理解的方式来检索数据。 6. Configuration:这是配置类,用于加载 Hibernate 配置文件和映射文件,设置数据库连接参数,以及创建 SessionFactory。 Hibernate API 文档通常会包含对以上核心接口的详细介绍,以及如何操作这些接口的示例代码。在文档中,也可能会描述与数据库连接的配置选项,包括连接池的配置、方言的配置,以及如何自定义映射和属性。 Hibernate 支持多种数据库操作,文档会介绍与特定数据库厂商相关的配置信息,例如 MySQL、Oracle、SQL Server 等。文档会说明如何设置连接参数,如何配置数据库方言(Dialect),以及如何在映射文件中指定表和列的映射。 除了核心功能外,Hibernate API 文档还可能涵盖一些高级特性,例如: - 缓存:Hibernate 提供一级和二级缓存。一级缓存是 Session 级别的缓存,它保证在同一个 Session 中对象不会被重复加载;二级缓存是 SessionFactory 级别的缓存,可以跨 Session 共享数据。 - 延迟加载(Lazy Loading)和即时加载(Eager Loading):延迟加载是指对象的某些属性只有在真正需要的时候才会从数据库中加载;即时加载则是指在加载一个对象时,其关联的对象也会一起被加载。 - 事务和并发控制:Hibernate API 文档会介绍如何使用事务来保证数据的一致性和隔离性,以及如何处理并发问题,例如乐观锁和悲观锁的使用。 - 映射技术:Hibernate 支持多种映射方式,包括基于 XML 的映射和注解(Annotation)映射。文档会介绍如何使用这两种方式来定义实体与数据库表的映射关系。 - Hibernate 工具类:Hibernate 提供了工具类,例如 SchemaExport、Evictor 等,文档会说明这些工具类的用途和用法。 Hibernate API 中文文档是每个希望熟练运用 Hibernate 进行 Java 应用开发的程序员不可或缺的参考资料。通过阅读和理解文档,开发者可以有效地利用 Hibernate API 进行高效、安全、可维护的数据持久化操作。
386 浏览量
依赖对象(Dependent objects) 组件(Component)是一个被包含的对象,在持久化的过程中,它被当作值类型,而并非一个实体的引用。在这篇文档中,组件这一术语指的是面向对象的合成概念(而并不是系统构架层次上的组件的概念)。举个例子, 你对人(Person)这个概念可以像下面这样来建模: public class Person { private java.util.Date birthday; private Name name; private String key; public String getKey() { return key; } private void setKey(String key) { this.key=key; } public java.util.Date getBirthday() { return birthday; } public void setBirthday(java.util.Date birthday) { this.birthday = birthday; } public Name getName() { return name; } public void setName(Name name) { this.name = name; } ...... ...... } public class Name { char initial; String first; String last; public String getFirst() { return first; } void setFirst(String first) { this.first = first; } public String getLast() { return last; } void setLast(String last) { this.last = last; } public char getInitial() { return initial; } void setInitial(char initial) { this.initial = initial; } } 在持久化的过程中,姓名(Name)可以作为人(Person)的一个组件。需要注意的是:你应该为姓名的持久化属性定义getter和setter方法,但是你不需要实现任何的接口或申明标识符字段。 以下是这个例子的Hibernate映射文件: <!-- class attribute optional --> 人员(Person)表中将包括pid, birthday, initial, first和 last等字段。 就像所有的值类型一样, 组件不支持共享引用。 换句话说,两个人可能重名,但是两个Person对象应该包含两个独立的Name对象,只不过这两个Name对象具有“同样”的值。 组件的值可以为空,其定义如下。 每当Hibernate重新加载一个包含组件的对象,如果该组件的所有字段为空,Hibernate将假定整个组件为空。 在大多数情况下,这样假定应该是没有问题的。 组件的属性可以是任意一种Hibernate类型(包括集合, 多对多关联, 以及其它组件等等)。嵌套组件不应该被当作一种特殊的应用(Nested components should not be
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部