1、针对类的注解
@Entity
@Table(name = "users",catalog = "mtm2")
@Entity表示类是一个持久化类。与数据库表有关联
@Table 指明类与哪个表有关联
2、针对主键的注解
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique =true, nullable = false)@Id 主键标识
@GeneratedValue 主键生成策略
@Column 列的说明
3、双向多对一映射、一对多映射
多对一映射时:“多”的一方只能找到1个“一”的一方。在“多”对象中有1个“一”的一方的对象。
一对多映射时:“一”的一方能到n个“多”的一方。在“一”对象中有个集合了。
对一:就是对象
对多:就是集合
Goods与Type是多对一的关系。
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "type")
public Types getTypes() {
return this.types;
}@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
mappedBy = "types")
public Set<Goods> getGoodses() {
return this.goodses;
}
@ManyToOne多对一映射
@JoinColumn关联字段
@OneToMany一对多映射
fetch =FetchType.LAZY 延迟加载
cascade =CascadeType.ALL 级联策略
mappedBy = "types" 表示放弃控制权,同时映射根据"types"属性的设置
4、多对多映射
@ManyToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
mappedBy = "goodses")
public Set<Users> getUserses() {
return this.userses;
}@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "collections",catalog = "mtm2",
joinColumns = { @JoinColumn(name= "userid", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "goodsid",updatable = false) })
public Set<Goods> getGoodses() {
return this.goodses;
}