JPA批注完全指南:精编版
需积分: 14 131 浏览量
更新于2024-09-13
收藏 318KB DOCX 举报
"这是一份详尽的JPA批注参考文档,涵盖了从基本的实体定义到复杂的关联映射和查询注解。这份精心整理的资料包括了代码示例、注释解释,旨在帮助开发者深入理解和使用Java Persistence API (JPA) 和 Hibernate 框架。"
JPA(Java Persistence API)是Java平台上的一个标准,用于对象关系映射(ORM),它允许开发者以面向对象的方式处理数据库操作。Hibernate是JPA的一个流行实现。以下是一些关键的JPA批注的详细说明:
1. **@Entity** - 用于标记一个Java类作为持久化实体,表示该类将在数据库中对应一张表。
2. **@Id** - 标识实体中的主键字段,通常与@GeneratedValue一起使用来自动生成主键值。
3. **@GeneratedValue** - 定义主键如何生成,可以是自动序列、UUID等策略。
4. **@ManyToOne, @OneToOne, @OneToMany, @ManyToMany** - 这些注解用于定义不同类型的关联关系,如一对一、一对多、多对一和多对多。
5. **@JoinColumn, @JoinColumns** - 用于指定关联表之间的连接列,用于多对一和一对一的关联。
6. **@JoinTable** - 在多对多关联中,用于定义中间关联表的详细信息。
7. **@Lob** - 用于标记大对象(LOB)字段,如BLOB或CLOB,存储大量文本或二进制数据。
8. **@Temporal** - 对于日期和时间字段,提供特定的存储格式,如TIMESTAMP、DATE或TIME。
9. **@Embeddable, @Embedded, @EmbeddedId** - 支持复合主键和嵌入式实体,将多个字段组合成一个实体,提高数据结构的复用性。
10. **@Inheritance** - 控制实体类的继承策略,如SINGLE_TABLE、JOINED或TABLE_PER_CLASS。
11. **@Table** - 定义实体对应的数据库表名,可以自定义表名和别名。
12. **@NamedQueries, @NamedQuery** - 用于定义预编译的JPA查询,提高性能并简化代码。
13. **@NamedNativeQuery** - 定义原生SQL查询,可以返回复杂的结果集。
14. **@Column** - 定义字段在数据库表中的映射,包括列名、长度、是否可为空等属性。
15. **@GeneratedValue, @SequenceGenerator** - 用于设置主键生成策略,例如基于序列的生成方式。
16. **@AssociationOverride, @AttributeOverride** - 在继承关系中覆盖父类的关联或属性映射。
17. **@EntityListeners** - 注册实体监听器,可以在特定的生命周期事件中执行代码。
18. **@PersistenceContext, @PersistenceUnit** - 分别用于注入EntityManager和EntityManagerFactory,它们是JPA的主要工作接口。
19. **@ExcludeDefaultListeners, @ExcludeSuperclassListeners** - 可以选择性地忽略默认或父类的监听器。
20. **@OrderBy** - 用于指定结果集排序的字段和顺序。
21. **@SqlResultSetMapping, @SqlResultSetMappings** - 自定义SQL查询结果集的映射,用于处理复杂查询结果。
22. **@QueryHint** - 提供查询优化提示,例如设置数据库的特定参数。
23. **@SecondaryTable, @SecondaryTables** - 支持实体数据跨多个物理表的存储。
24. **@TableGenerator, @SequenceGenerator** - 定义自增序列生成器,用于生成实体的唯一标识。
这些批注是JPA开发的核心元素,理解并熟练使用它们可以极大地提升开发效率和代码质量。通过这份详尽的JPA批注参考,开发者可以更深入地掌握JPA框架,并在实际项目中灵活应用。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-07-13 上传
新思维软件
- 粉丝: 886
- 资源: 15
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析