Hibernate 实体类
程序员文章站
2022-04-14 20:41:34
...
– Start
- 我们把与表对应的类称之为实体类,用 @Entity 修饰
- 类名与表名可以不一致,如果不一致,需要使用 @Table 设置
- 每个表都有主键,我们需要用 @Id 修饰主键字段
- 列名和字段名可以不一致,如果不一致,需要使用 @Column 设置
- 如果列和字段类型不匹配,我们需要通过 @Type 告诉 Hibernate 如何进行类型转换
- 如果一个字段在数据库中没有对应的列,需要用 @Transient 修饰
- 每一实体类必须有个无参的构造方法
- 通常我们无需实现 equals() 和 hashCode() 方法,如果要实现,必须与主键一致。
- Hibernate 到底是通过 getter 和 setter 访问字段还是直接访问呢?它根据 @Id 修饰字段还是方法来决定。
package shangbo.hibernate.demo004;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.Type;
@Entity // 我们把与表对应的类称之为实体类,用 @Entity 修饰
@Table(schema = "HR", name = "CUSTOMER") // 类名与表名可以不一致,如果不一致,需要使用 @Table 设置
public class Customer {
@Id // 每个表都有主键,我们需要用 @Id 修饰主键字段
@Column(name = "ID") // 列名和字段名可以不一致,如果不一致,需要使用 @Column 设置
@Type(type = "int") // 如果列和字段类型不匹配,我们需要通过 @Type 告诉 Hibernate 如何进行类型转换
private Integer customerId;
// 列名与字段名一致,无需特殊设置
private String customerName;
// 如果一个字段在数据库中没有对应的列,需要用 @Transient 修饰
@Transient
private String onlyInJava;
// 每一实体类必须有个无参的构造方法
public Customer() {
}
public Customer(Integer customerId, String customerName) {
this.customerId = customerId;
this.customerName = customerName;
}
public Integer getCustomerId() {
return customerId;
}
public void setCustomerId(Integer customerId) {
this.customerId = customerId;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
}
– 更多参见:Hibernate 精萃
– 声 明:转载请注明出处
– Last Updated on 2019-06-11
– Written by ShangBo on 2019-06-11
– End