JPA批注完全指南:精编版

需积分: 14 1 下载量 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框架,并在实际项目中灵活应用。