JPA中的实体类可以使用注解还是XML进行映射?

JPA中的实体类中的字段可以使用以下注解进行映射:

  1. @Id:定义一个实体的主键属性。
  2. @GeneratedValue:定义主键的生成策略,如AUTO、IDENTITY、SEQUENCE等。
  3. @Column:定义属性和列的映射关系,可以指定列名、长度、唯一性等。
  4. @Temporal:定义日期属性的映射格式。
  5. @Enumerated:定义枚举属性的映射格式。
  6. @Lob:定义大对象类型属性的映射格式。
  7. @Transient:定义一个非映射属性。
    一个简单的例子:
@Entity
@Table(name = "user")
public class User {

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name", length = 32)
    private String name;

    @Temporal(TemporalType.DATE)
    private Date birthday;

    @Enumerated(EnumType.STRING) 
    private Gender gender;

    @Lob
    private byte[] content; 

    @Transient
    private String temp;
}  

可以看出,上述User实体类的字段使用了@Id、@GeneratedValue、@Column、@Temporal、@Enumerated、@Lob和@Transient等注解进行映射。

  • @Id和@GeneratedValue注解id字段作为主键
  • @Column注解name字段与数据库的name列映射
  • @Temporal注解birthday字段映射到日期格式的列
  • @Enumerated注解gender字段映射枚举类型
  • @Lob注解content字段映射到大对象列
  • @Transient注解temp字段,标识其为非映射字段