JPA-基本注解

1. @Entity:在实体类上进行标注,指出该Java类为实体类,将映射到指定的数据库表;

@Entitypublic class DeptEntity {}

2. @Table:当实体类与映射的表名不相同时,需要使用此注解标注,该注解与@Entity并列使用:

  》name:用于指定数据库的表名;

  》schema:用户指定数据库的名称;

@Entity
@Table(name = "dept", schema = "yootk")
public class DeptEntity {}

3. @Id:用于申明主键列,可以申明在属性上,也可以申明在get方法上

4. @GeneratedValue:用于标注主键的生成策略,通过strategy属性进行指定,默认情况下,JPA自动选择一个适合底层数据库的实现策略

  》strategy指定策略:

    GenerationType.IDENTITY:id自增,oracle不支持

    GenerationType.AUTO:自动选择合适策略

    GenerationType.SEQUENCE:通过序列生成主键,通过@SequenceGenerator()注解指定序列名,MySql不支持

    GenerationType.TABLE:通过表产生主键,框架借由表模式序列产生主键,使用该策略更易于数据库的移植

@Entity
@Table(name = "dept", schema = "yootk")
public class DeptEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long deptno;
}

5. @Basic:表示属性到数据库表的字段的映射,默认为@Basic,可以不用写

  》fetch: 表示该属性的读取策略,有 EAGER 和 LAZY 两种,分别表示主支抓取和延迟加载,默认为 EAGER.
  》optional:表示该属性是否允许为null, 默认为true

6. @Column:当实体的属性与其映射的数据库表的列不同名时需要使用,当字段名称相同时,可以不用写

    @Basic
    @Column(name = "dname")
    private String dname;

7. @Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic

    @Transient
    private Double avgsal;
原文地址:https://www.cnblogs.com/luliang888/p/11267353.html