实体类可以分为四部分
1.申明映射的表
//注解这是一个实体类文件
@Entity
//这个类映射到表,表名为dept
@Table(name="dept")
public class Dept implements Serializable
2.主键
//申明这是id主键
@Id
//对应数据库的deptno列
@Column(name="deptno")
//主键生成策略,策略名是myGen,策略是increment
@GenericGenerator(name="myGen",strategy="increment")
//主键策略使用myGen
@GeneratedValue(generator="myGen")
public Integer getDeptno() {
return deptno;
}
3.其他字段
//对应数据库的dname列
@Column(name="dname")
public String getDname() {
return dname;
}
//对应数据库的loc列
@Column(name="loc")
public String getLoc() {
return loc;
}
4.特殊字段(一对多,多对一,多对多)
一对多
//mappedBy:多中对象名 fetch:是否开启懒加载 targetEntity:对应的实体类
@OneToMany(mappedBy="dept",fetch=FetchType.LAZY,targetEntity=Emp.class)
public List<Emp> getEmpList() {
return empList;
}
多对一
//fetch:是否开启懒加载 targetEntity:一方类名
@ManyToOne(fetch=FetchType.LAZY,targetEntity=Dept.class)
//joincolumn:表中外键名
@JoinColumn(name="deptno")
public Dept getDept() {
return dept;
}
多对多
//fetch:是否懒加载
@ManyToMany(fetch=FetchType.LAZY)
//JoinTable(name:第三方表名,joinColumns={@JoinColumn(name=本表对应第三方表的键)},inverseJoinColumns={@JoinColumn=(name=对方表对应第三方表的键)})
@JoinTable(name="my_u_r",joinColumns={@JoinColumn(name="u_id")},inverseJoinColumns={@JoinColumn(name="r_id")})
public Set<Role> getRoles() {
return roles;
}
注意:
一旦开启懒加载就要配置OpenSessionInViewFilter这个文件把session关闭放在请求外面