概述
- 简单实体的使用
- @javax.persistence.Eneity和@javax.persistence.Table:
- @javax.persistence.Entity:标注在类上表示一个实体,所有的实体都必须标注有该注解;
- 默认情况下,实体的名称等于完全限定实体类名;
- @Entity(name="Author"):可以通过@Entity的name属性自定义实体名称;
- @Table(name="Authors"):可以通过@Table到name属性修改实体所映射到表名(实体映射到到表名默认为实体名称,如Author实体的默认表名为Author);
- @Table到属性:
- schema:修改数据库连接到用户的默认模式(假如数据库支持模式的话);
- catalog:表示表存在与catalog属性所指向到目录中,而不是数据库连接中选择到目录中;
- uniqueConstraints:专门用于模式生成的特殊属性,通过该属性可以指定特定的一个列或多个列将组成一个唯一的限制;
- indexes:指定在使用模式生成时JPA应该创建的索引,只有启用模式生成时才有效;
- 模式生成:是一个危险的特性,永远不应该在生产环境中使用,也不推荐在其他环境下使用;
- JPA使用实体字段的方式
- @javax.persistence.Access:设置数据库列(字段)与Java Bean属性的对应(映射)关系;
- @javax.persistence.Access(AccessType.PROPERTY)、@javax.persistence.Access(AccessType.FIELD):
- AccessType.PROPERTY:默认值,JPA提供着将使用Java Bean属性方法获取和设置字段值,推荐使用(应该坚持使用默认设置);
- AccessType.FIELD:JPA提供者将使用实例字段获取和设置字段值,不建议使用;
- @Access与属性注解(如@Id、@Basic、@Temporal等):
- 当为AccessType.PROPERTY(默认)时:将通过类中的字段来获取对应的表字段信息。此时,JPA只关注类中的字段名,并转换为对应的表字段信息,而不会读取getter方法和setter方法上的表字段注解信息;
- 当为AccessType.FIELD时:将通过类中的getter方法和setter方法来获取对应的表字段信息。此时,JPA只关注类中getter方法和setter方法上的表字段注解信息,并转换为对应的表字段信息;
- 添加注解的方式应该保持移植,使用AccessType.PROPERTY时就统一在Java Bean访问方法上标注,使用AccessType.FIELD时就统一在字段上标注;
- 主键的映射
- 简单主键
- @javax.persistence.Id:标注在私有字段或公开访问方法上,表示该属性为对应实体的主键(代理健);
- 当实体中没有标注有@Id的属性时,JPA提供者将查询名称为id的属性或访问方法并自动将其作为主键使用;
- @javax.persistence.GeneratedValue:指定主键生成策略,通过strategy属性指定
@GeneratedValue(strategy=GenerationType.AUTO_INCREMENT:MySQL
@GeneratedValue(strategy=GenerationType.IDENTITY:SQL Server和Sybase
@GeneratedValue(strategy=GenerationType.SERIAL、@GeneratedValue(strategy=GenerationType.NEXTVAL():PostgreSQL
@GeneratedValue(strategy=GenerationType.SYS_GUID():Oracle - @javax.persistence.GeneratedValue与@javax.psersistence.SequenceGenerator结合使用,实现使用序列生成值;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SomeEntityGenerator")
@SequenceGenerator(name = "SomeEntityGenerator", sequenceName = "SomeEntitySequence")- @GeneratedValue注解中的generator属性与@SequenceGenerator注解中的name属性相对应;
- 由@SequenceGenerator注解产生的生成器名称(SomeEntityGenerator)是全局,这意味着我们可以在一个实体上创建单个@SequenceGenerator,并在多个实体中重用它(当然也可以为每个实体使用单独的序列);
- @javax.persistence.TableGenerator:将一个单独的表用作数据库序列
- 组合ID:
- 结合使用@javax.persistence.Id和@javax.persistence.IdClass:将映射注解添加在实体类属性上;
- 结合使用@javax.persistence.EmbeddedId和@javax.persistence.Embeded:将映射注解添加到组合ID类属性上;
- 简单主键
最后
以上就是斯文万宝路为你收集整理的使用JPA注解将实体映射到表的全部内容,希望文章能够帮你解决使用JPA注解将实体映射到表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复