Hibernate Annotations Reference Guide
需积分: 9 62 浏览量
更新于2024-10-03
收藏 479KB PDF 举报
“Hibernate Annotations(English) - Hibernate 注解的英文参考指南,由 Emmanuel Bernard 编写,涵盖了设置、实体映射、查询映射以及 Hibernate 的扩展注解等内容。”
《Hibernate Annotations》是关于如何使用注解在 Hibernate 框架中进行对象关系映射的详细指南。这本书的3.5.6-Final版本主要介绍了如何利用 Java Persistence API (JPA) 和 Hibernate 自身的注解来简化 ORM(对象关系映射)过程。
1. 设置 annotations 项目
- 需求:在开始之前,你需要一个支持 JPA 和 Hibernate 的开发环境。
- 配置:配置包括引入必要的依赖库,配置 Hibernate 的核心文件,如 `persistence.xml` 或者应用相关的配置类。
- 属性:理解并配置 Hibernate 配置属性,例如数据库连接信息、缓存设置等。
- 日志:配置日志系统,如 Log4j 或 SLF4J,以便于调试和跟踪应用行为。
2. 映射实体
- 简介:实体是数据库中的表对应的概念,通过注解将 Java 类与数据库表关联起来。
- JPA 映射:使用 `@Entity` 标记 Java 类作为持久化实体,`@Table` 定义对应数据库表名。
- 简单属性映射:`@Column` 注解用于映射字段到列,`@Basic` 指定基本类型属性的映射。
- 标识符属性映射:`@Id` 标识主键,`@GeneratedValue` 控制主键生成策略。
- 继承映射:`@Inheritance` 和 `@DiscriminatorColumn` 处理多态继承关系。
- 实体关联/关系映射:`@ManyToOne`, `@OneToMany`, `@OneToOne`, `@ManyToMany` 分别处理一对一、一对多、多对一、多对多的关系。
- 复合主键和外键到复合主键的映射:使用 `@EmbeddedId` 和 `@AssociationOverride` 处理复杂主键结构。
- 二级表映射:`@SecondaryTable` 将一个实体映射到多个表。
- 缓存实体:`@Cacheable` 和 `@Cache` 注解实现缓存策略。
3. 映射查询
- JP-QL/HQL 查询映射:`@NamedQuery` 和 `@NamedNativeQuery` 定义预编译的 JP-QL 和 SQL 查询。
- 原生 SQL 查询映射:使用 `@NamedNativeQuery` 直接编写 SQL 查询。
4. Hibernate 注解扩展
- 实体:`@EntityListeners` 注解允许定义实体监听器。
- 标识符:`@GenericGenerator` 可以自定义生成器策略。
- 属性:`@Temporal` 对日期和时间类型进行特殊处理。
- 继承:`@Inheritance(strategy=InheritanceType.SINGLE_TABLE)` 等定义继承策略。
- 单关联相关注解:如 `@JoinColumn` 控制关联列的属性。
- 集合相关注解:`@OrderColumn` 和 `@ElementCollection` 处理集合排序和元素存储。
- 级联操作:`@Cascade` 控制操作的级联行为。
- 过滤器:`@Filter` 和 `@FilterDef` 提供动态条件查询的能力。
- 查询:`@SQLInsert`, `@SQLUpdate`, `@SQLDelete` 定义自定义的 CRUD SQL 语句。
- Tuplizer:允许自定义对象的实体模式实现。
- Fetch profiles:`@FetchProfile` 用于控制懒加载和 Eager Fetching 策略。
- 覆盖默认行为:书中可能还涉及了如何通过注解覆盖 Hibernate 的默认行为。
这份文档深入地讲解了 Hibernate 注解的使用,对于理解和实践 Hibernate ORM 是非常有价值的资源。无论是初学者还是有经验的开发者,都可以从中获得关于如何优雅地处理 Java 对象与数据库交互的指导。
2011-08-05 上传
2016-09-23 上传
2012-05-22 上传
2008-04-23 上传
2009-04-16 上传
2008-10-16 上传
2010-11-24 上传
royjohn
- 粉丝: 0
- 资源: 4
最新资源
- Raspberry Pi OpenCL驱动程序安装与QEMU仿真指南
- Apache RocketMQ Go客户端:全面支持与消息处理功能
- WStage平台:无线传感器网络阶段数据交互技术
- 基于Java SpringBoot和微信小程序的ssm智能仓储系统开发
- CorrectMe项目:自动更正与建议API的开发与应用
- IdeaBiz请求处理程序JAVA:自动化API调用与令牌管理
- 墨西哥面包店研讨会:介绍关键业绩指标(KPI)与评估标准
- 2014年Android音乐播放器源码学习分享
- CleverRecyclerView扩展库:滑动效果与特性增强
- 利用Python和SURF特征识别斑点猫图像
- Wurpr开源PHP MySQL包装器:安全易用且高效
- Scratch少儿编程:Kanon妹系闹钟音效素材包
- 食品分享社交应用的开发教程与功能介绍
- Cookies by lfj.io: 浏览数据智能管理与同步工具
- 掌握SSH框架与SpringMVC Hibernate集成教程
- C语言实现FFT算法及互相关性能优化指南