我是靠谱客的博主 斯文万宝路,最近开发中收集的这篇文章主要介绍使用JPA注解将实体映射到表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  1. 简单实体的使用
    1. @javax.persistence.Eneity和@javax.persistence.Table:
    2. @javax.persistence.Entity:标注在类上表示一个实体,所有的实体都必须标注有该注解;
    3. 默认情况下,实体的名称等于完全限定实体类名;
    4. @Entity(name="Author"):可以通过@Entity的name属性自定义实体名称;
    5. @Table(name="Authors"):可以通过@Table到name属性修改实体所映射到表名(实体映射到到表名默认为实体名称,如Author实体的默认表名为Author);
    6. @Table到属性:
      1. schema:修改数据库连接到用户的默认模式(假如数据库支持模式的话);
      2. catalog:表示表存在与catalog属性所指向到目录中,而不是数据库连接中选择到目录中;
      3. uniqueConstraints:专门用于模式生成的特殊属性,通过该属性可以指定特定的一个列或多个列将组成一个唯一的限制;
      4. indexes:指定在使用模式生成时JPA应该创建的索引,只有启用模式生成时才有效;
      5. 模式生成:是一个危险的特性,永远不应该在生产环境中使用,也不推荐在其他环境下使用;
    7. JPA使用实体字段的方式
      1. @javax.persistence.Access:设置数据库列(字段)与Java Bean属性的对应(映射)关系;
      2. @javax.persistence.Access(AccessType.PROPERTY)、@javax.persistence.Access(AccessType.FIELD):
        1. AccessType.PROPERTY:默认值,JPA提供着将使用Java Bean属性方法获取和设置字段值,推荐使用(应该坚持使用默认设置);
        2. AccessType.FIELD:JPA提供者将使用实例字段获取和设置字段值,不建议使用;
      3. @Access与属性注解(如@Id、@Basic、@Temporal等):
        1. 当为AccessType.PROPERTY(默认)时:将通过类中的字段来获取对应的表字段信息。此时,JPA只关注类中的字段名,并转换为对应的表字段信息,而不会读取getter方法和setter方法上的表字段注解信息;
        2. 当为AccessType.FIELD时:将通过类中的getter方法和setter方法来获取对应的表字段信息。此时,JPA只关注类中getter方法和setter方法上的表字段注解信息,并转换为对应的表字段信息;
        3. 添加注解的方式应该保持移植,使用AccessType.PROPERTY时就统一在Java Bean访问方法上标注,使用AccessType.FIELD时就统一在字段上标注;
    8. 主键的映射
      1. 简单主键
        1. @javax.persistence.Id:标注在私有字段或公开访问方法上,表示该属性为对应实体的主键(代理健);
        2. 当实体中没有标注有@Id的属性时,JPA提供者将查询名称为id的属性或访问方法并自动将其作为主键使用;
        3. @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
        4. @javax.persistence.GeneratedValue与@javax.psersistence.SequenceGenerator结合使用,实现使用序列生成值;

          @Id
          @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SomeEntityGenerator")
          @SequenceGenerator(name = "SomeEntityGenerator", sequenceName = "SomeEntitySequence")
          1. @GeneratedValue注解中的generator属性与@SequenceGenerator注解中的name属性相对应;
          2. 由@SequenceGenerator注解产生的生成器名称(SomeEntityGenerator)是全局,这意味着我们可以在一个实体上创建单个@SequenceGenerator,并在多个实体中重用它(当然也可以为每个实体使用单独的序列);
        5. @javax.persistence.TableGenerator:将一个单独的表用作数据库序列
      2. 组合ID:
        1. 结合使用@javax.persistence.Id和@javax.persistence.IdClass:将映射注解添加在实体类属性上;
        2. 结合使用@javax.persistence.EmbeddedId和@javax.persistence.Embeded:将映射注解添加到组合ID类属性上;

最后

以上就是斯文万宝路为你收集整理的使用JPA注解将实体映射到表的全部内容,希望文章能够帮你解决使用JPA注解将实体映射到表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部