码迷,mamicode.com
首页 > 其他好文 > 详细

2、JPA-Annotation

时间:2019-02-02 12:47:48      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:抓取   getx   表示   api   persist   无法   class   int   public   

注解放在类属性上不生效时可放在get方法上试试,原因未知

 

@Entity

/**
 * @Entity 该Java类为实体类,将映射到数据库表。如声明一个实体类 Customer,它将映射到数据库中的 customer 表上。
 */
@Entity
public class Customer {

@Table

@Table(name = "JPA_CUTOMERS")
/**
 * @Table 当实体类与其映射的数据库表名不同名时使用
 *  name,用于指明数据库的表名
 *  catalog 和 schema 用于设置表所属的数据库目录或模式,通常为数据库名
 *  uniqueConstraints 选项用于设置约束条件,通常不须设置
 */
@Entity
public class Customer {

    private Integer id;

@Id

/**
 * @Id 声明一个实体类的属性映射为数据库的主键列。标注可写在属性的getter方法上。
 */
@Id
public Integer getId() {
    return id;
}

@GeneratedValue

/**
 * @GeneratedValue 用于标注主键的生成策略,通过 strategy 属性指定
 * 默认 JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer 对应 identity,MySQL 对应 auto increment
 * 在 javax.persistence.GenerationType 中定义了以下几种可供选择的策略:
 * IDENTITY:采用数据库 ID自增长的方式来自增主键字段,Oracle 不支持这种方式
 * AUTO: JPA自动选择合适的策略,默认选项
 * SEQUENCE:通过序列产生主键,通过 @SequenceGenerator 注解指定序列名,MySql 不支持这种方式
 * TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植
 */
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
public Integer getId() {
    return id;
}

@Basic

/**
 * @Basic 表示属性到数据库表字段的映射, 对于没有任何注解的 getXxxx() 方法,默认为写了 @Basic
 * fetch: 表示该属性的读取策略,有 EAGER 和 LAZY 两种,分别表示主支抓取和延迟加载,默认为 EAGER.
 * optional:表示该属性是否允许为null, 默认为true
 */
@Basic(optional = false)
public String getEmail() {
    return email;
}

@Column

/**
 * @Column 当实体类属性与其映射的数据库表的列不同名时使用
 * name,用于设置映射数据库表的列名。此外,该标注还包含其它多个属性,如:unique 、nullable、length 等
 * columnDefinition 属性: 表示该字段在数据库中的实际类型
 * 通常 ORM 框架可以根据属性类型自动判断数据库中字段的类型,但是对于Date类型仍无法确定数据库中字段类型究竟是 DATE,TIME 还是 TIMESTAMP
 * 此外 String 的默认映射类型为 VARCHAR, 如果要将 String 类型映射到特定数据库的 BLOB 或 TEXT 字段类型
 */
@Column(name = "LAST_NAME", length = 50, nullable = false)
public String getLastName() {
    return lastName;
}

@Transient

/**
 * @Transient 表示该属性不需要映射到数据库表字段,ORM 框架忽略该属性
 * 如果一个属性并非数据库表字段映射,需写上 @Transient,否则 ORM 框架默认其注解为 @Basic
 */
@Transient
public String getInof() {
    return "Customer{" +
            "id=" + id +
            ", lastName=‘" + lastName + ‘\‘‘ +
            ", email=‘" + email + ‘\‘‘ +
            ", age=" + age +
            ‘}‘;
}

@Temporal

/**
 * @Temporal 在进行时间类属性映射时调整精度
 * 在核心的 Java API 中没有定义 Date 类型的精度(temporal precision)
 * 在数据库中,表示 Date 类型的数据有 DATE,TIME 和 TIMESTAMP 三种精度(即单纯的日期,时间,或者两者兼备)
 */
@Temporal(TemporalType.TIMESTAMP)
public Date getCreatedTime() {
    return createdTime;
}

@Temporal(TemporalType.DATE)
public Date getBirth() {
    return birth;
}

技术图片

 

2、JPA-Annotation

标签:抓取   getx   表示   api   persist   无法   class   int   public   

原文地址:https://www.cnblogs.com/jhxxb/p/10348142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!