说实话,这是看视频学习最烂的阶段,也不知道为什么Hibernate会讲的这么差
利用注解将实体类的属性持久化到数据库有下面几种情况:
1.实体类在数据库中没有相对应的表,则默认会按类名在数据库中创建新表:
如:
public class Teacher
会在数据库中创建名为Teacher的表,当然可以指定一个表名,如下:
@Entity @Table(name="Teacher")
public class Teacher
2.实体类中的属性与表中的列是一一对应的,一般只要在是ID的属性的getter上加上注解就可以了,其他所有属性默认与其他列对应,当然是按属性名跟列名相同来对应的:
private int id;
private String name;
private String title;
@Id
public int getId() {
return id;
}
假如属性名与列名不一样的时候:如下指定
@Column(name="_title")
public String getTitle() {
return title;
}
3.实体中后来增加了一些属性,并且也需要持久化到数据库,则默认会在表中新建与新属性对应的列,列名与属性名一致,同时可以指定:
private Date workDate = new Date();
@Column(name="workDate")//@Temporal(TemporalType.DATE)//指定Date类型的精度
public Date getWorkDate() {
return workDate;
}
4.实体中有些属性不希望持久化到数据库:
@Transient
public String getTest() {
return test;
}
5.将日期类型持久化到数据库:
private Date workDate = new Date();
@Column(name="workDate")//@Temporal(TemporalType.DATE)//指定Date类型的精度,主要是指在数据库中存取时的精度,比如TemporalType.DATE在数据库中的类型是datetime
public Date getWorkDate(){
return workDate;
}
6.将枚举类型持久化到数据库:
public enum Level {
A,B,C,D;
}
private Level level = Level.A;
@Enumerated(EnumType.ORDINAL)//.STRING)
public Level getLevel() {
return level;
}
//ordinal在数据中存入的是枚举值的在定义时候的顺序,从0开始,string存入的是枚举值的字符串表示,比如就是A
7.其他大部分类型由hibernate作转换,比如Integer 类型对应数据库中 int类型,String类型对应数据库中的varchar 等等