hibernate注解配置
1.映射实体
注解:将一个类声明为实体类,在通过配置文件指向,,在生成的get方法上配置映射标示符属性
格式如下:
@Entity
@Table(name="表名")
类
映射主键标示符属性
@Id
@GeneratedValue
@Column(name="表中主键列")
映射标示符属性
@Column(name="表中对应的列名")
2.单向一对多 在低的一方配置对方的集合
例子:
首先定义相关联表的set集合
private Set<对方的类名> a = new HashSet<对方的类名>();
主键配置,和其他属性的配置映射如上
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name="对应表的外键列名")
public Set<Board> getSet(){}
3.单向多对一 在多的一方配置低的一方的对象
例子:
主键配置,和其他属性的配置映射如上
@ManyToOne(Fetch = Fetch.EAGER)
@JoinColumn(name="category_id")
public 类名 get创建的对象名(){
....
}
4.多对多 互相创建对方的set集合 多对多为配置配置需要第三张中间表
映射实体和属性如上
例子:
private Set<Cours> cours = new HashSet<Cours>();
getset...
@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinTable(name="第三张中间表名",
joinColumns = @JoinColumn(name="本表主键在数据库的中间表对应的外键名"),
inverseJoinColumns=@JoinColumn(name="想要关联表在中间表的外键名"))
public Set<Cours> getCours(){
.....
}
另一实体类的配置:基本配置如上实体类
private Set<Student> stu = new HashSet<Student>();
getset....
@ManyToMany(cascade=CascadeType.ALL,
fetch = FetchType.LAZY,mappedBy="courses")
public Set<Student> getStu(){
....
}
总结:
1.在面向对象设计和实体模型关系中,对象间关系一般包括:
一对多(one-to-many)
多对一(many-to-one)
多对多(many-to-many)
2.
对象是现实世界中具有唯一性的事物
单向一对多只需在“一”的一方进行配置,反之就是单向多对一
3.双向一对多就是对单向一对多的一种改进
多对多配置