Spring Data JPA中是否有类似的注解来映射数据库表字段?有哪些?

Spring Data JPA 中有多个注解可用于映射数据库表字段,具体如下:

  1. @Entity:用于添加在实体类上,定义该 Java 类成为被 JPA 管理的实体,将映射到指定的数据库表。例如:
    import javax.persistence.Entity;
    
    @Entity
    public class User {
        // 类的属性和方法
    }
    
  2. @Table:与 @Entity 一同使用,用于指定数据库的表名等详细信息。例如:
    import javax.persistence.Entity;
    import javax.persistence.Table;
    
    @Entity
    @Table(name = "custom_user_table")
    public class User {
        // 类的属性和方法
    }
    
  3. @Id:定义属性为数据库表中的主键列,一个实体里面必须有一个。例如:
    import javax.persistence.Entity;
    import javax.persistence.Id;
    
    @Entity
    public class User {
        @Id
        private Long id;
    }
    
  4. @Column:用于定义该属性对应数据库中的列名以及其他相关属性,如是否唯一、是否可为空、列的长度等。例如:
    import javax.persistence.Entity;
    import javax.persistence.Column;
    
    @Entity
    public class User {
        @Column(name = "user_name", unique = true, nullable = false, length = 50)
        private String username;
    }
    
  5. @Basic:表示属性是到数据库表字段的映射。如果实体的字段上没有任何注解,默认即为 @Basic。可以设置属性的抓取方式(如立即加载或延迟加载)、是否可为空等属性。例如:
    import javax.persistence.Basic;
    import javax.persistence.FetchType;
    
    @Entity
    public class User {
        @Basic(fetch = FetchType.LAZY)
        private String description;
    }
    
  6. @Transient:表示该属性并非是一个到数据库表的字段的映射,JPA 映射数据库的时候会忽略它,与 @Basic 作用相反。例如:
    import javax.persistence.Transient;
    
    @Entity
    public class User {
        @Transient
        private int tempVariable;
    }
    
  7. @GeneratedValue:用于指定主键的生成策略。属性 strategy 可设置生成策略类型,如 GenerationType.IDENTITY(数据库自增长,多用于 MySQL)、GenerationType.SEQUENCE(通过序列产生主键)等。例如:
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    
    @Entity
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    }
    
  8. @Temporal:用来设置 Date 类型的属性映射到对应精度的字段,如 TemporalType.DATE(映射为数据库 DATE 类型)、TemporalType.TIME(映射为数据库 TIME 类型)、TemporalType.TIMESTAMP(映射为数据库 DATETIME 类型)。例如:
    import javax.persistence.Entity;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
    import java.util.Date;
    
    @Entity
    public class Event {
        @Temporal(TemporalType.DATE)
        private Date eventDate;
    }
    
  9. @Enumerated:用于映射枚举字段。可以指定枚举值在数据库中的存储方式,如 EnumType.ORDINAL(存储枚举字段的下标)或 EnumType.STRING(存储枚举字段的 name)。例如:
    import javax.persistence.Entity;
    import javax.persistence.Enumerated;
    
    @Entity
    public class User {
        @Enumerated(EnumType.STRING)
        private Gender gender;
    
        public enum Gender {
            MALE,
            FEMALE
        }
    }
    
  10. @Lob:将属性字段映射成数据库支持的大对象类型,如 CLOB(长字符串类型)或 BLOB(字节类型)。例如:
    import javax.persistence.Entity;
    import javax.persistence.Lob;
    
    @Entity
    public class Document {
        @Lob
        private String textContent;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值