### hibernate教程知识点详解 #### 一、概述 本文档主要介绍了使用Hibernate进行注解式开发的方法,并且针对Hibernate的基本使用及其配置进行了详尽的解释。Hibernate作为一个流行的Java持久层框架,提供了对象关系映射(ORM)的功能,使得Java应用程序能够更加方便地操作数据库。 #### 二、创建注解项目 ##### 2.1 系统需求 在创建一个基于注解的Hibernate项目之前,首先需要确保满足以下系统需求: - Java Development Kit (JDK):推荐使用最新版本。 - Integrated Development Environment (IDE):如IntelliJ IDEA、Eclipse等支持Java开发的环境。 - Hibernate库:确保项目中包含了正确的Hibernate版本以及相关依赖。 - 数据库:配置好用于测试或开发的数据库,例如MySQL、PostgreSQL等。 ##### 2.2 系统配置 - **构建工具**:如Maven或Gradle,用于管理项目的依赖关系。 - **pom.xml**或**build.gradle**:配置文件中应包含Hibernate及相关数据库驱动的依赖。 - **Hibernate配置文件**:如`hibernate.cfg.xml`,配置数据库连接信息、方言等。 - **日志框架**:配置适当的日志框架,如Log4j、SLF4J等。 #### 三、实体Bean 实体Bean是Hibernate中非常重要的概念之一,用于表示数据库中的表,并通过注解来映射其字段与数据库表中的列。 ##### 3.1 简介 实体Bean是表示数据库表的对象形式,在Hibernate中通过注解进行配置,可以实现对象与数据库表之间的映射。 ##### 3.2 用EJB3注解进行映射 - **声明实体bean**: - 使用`@Entity`注解标记类为实体。 - 使用`@Table(name = "tableName")`指定对应的数据库表名。 - **映射简单属性**: - 基本的属性映射:使用`@Column`注解来指定列名等信息。 - 映射列属性:可以通过`@Column`注解的参数如`name`、`nullable`、`length`等来更详细地定义列。 - **嵌入式对象**:对于复杂的属性,可以使用`@Embedded`或`@EmbeddedId`来映射。 - **映射主键属性**: - 主键生成策略:通过`@Id`和`@GeneratedValue`来定义。 - **映射继承关系**: - 每个类一张表:使用`@Inheritance(strategy = InheritanceType.SINGLE_TABLE)`。 - 每个类层次结构一张表:使用`@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)`。 - 连接的子类:使用`@Inheritance(strategy = InheritanceType.JOINED)`。 - 从父类继承的属性:通过`@MappedSuperclass`来实现。 - **映射实体Bean的关联关系**: - 一对一关系:使用`@OneToOne`。 - 多对一关系:使用`@ManyToOne`。 - 集合类型:使用`@OneToMany`、`@ManyToMany`等注解。 - **映射复合主键与外键**: - 复合主键可以通过`@EmbeddedId`和自定义的复合主键类来实现。 - **映射二级表**: - 使用`@SecondaryTables`和`@SecondaryTable`来指定额外的表。 #### 四、Hibernate独有的注解扩展 Hibernate除了支持标准的EJB3注解之外,还提供了一些特有的注解以增强功能: - **实体**:`@Entity`、`@MappedSuperclass`等。 - **标识符**:`@Id`、`@GeneratedValue`等。 - **属性**: - 访问类型:`@Access`。 - 公式:`@Formula`。 - 类型:`@Type`。 - 索引:`@Index`。 - `@Parent`:用于关联关系。 - 生成的属性:`@Generated`。 - **继承**:通过`@Inheritance`来配置不同的继承策略。 - **关联关系**: - 延迟加载选项:`@Fetch`。 - 获取模式:`@FetchMode`。 - **集合类型**: - 参数注解:`@ElementCollection`、`@MapKey`等。 - **缓存**:`@Cache`。 - **过滤器**:`@Filter`。 - **查询**:`@NamedQuery`、`@NamedNativeQuery`。 #### 五、通过XML覆写元数据 虽然本文档主要讲解了注解式开发,但有时也需要通过XML文件来覆写部分元数据。这主要包括以下几个方面: - **全局级别的元数据**:如事务隔离级别、缓存策略等。 - **实体级别的元数据**:如实体类的命名空间等。 - **属性级别的元数据**:如属性的读写方式等。 - **关联级别的元数据**:如关联关系的延迟加载等。 #### 六、Hibernate验证器 Hibernate验证器是用于校验实体对象的有效性的一种机制,它可以通过注解的方式来定义实体上的约束条件。 - **约束**: - 内置约束:如`@NotNull`、`@Size`等。 - 自定义约束:可以通过实现`ConstraintValidator`接口来创建。 - **使用验证器框架**: - 数据库schema层次验证:通过数据库触发器等方式实现。 - Hibernate基于事件的验证:利用Hibernate提供的事件监听机制。 - 程序级验证:在业务逻辑中手动进行验证。 #### 七、Hibernate与Lucene集成 为了提高搜索性能,可以将Hibernate与全文搜索引擎Lucene集成起来。 - **使用Lucene为实体建立索引**: - 注解领域模型:使用`@Indexed`等注解来标记需要建立索引的实体类。 - 启用自动索引:通过配置`org.hibernate.search.default.directory_provider`等属性来实现。 以上是对给定文件中提到的主要知识点的详细解释,希望可以帮助读者更好地理解和掌握Hibernate的相关知识。
剩余63页未读,继续阅读
- 粉丝: 2
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助