基于注解配置的hibernate

基于xml的配置:

实体+实体.hbm.xml+hibernate.cfg.xml

基于annotation的配置:

实体+hibernate.cfg.xml

如下:

基于注解配置的hibernate_第1张图片
实体
hibernate.cfg.xml



OneToMany的双向配置:

基于注解配置的hibernate_第2张图片
one

其中的注解配置是:

@Entity

@Table(name="t_classroom")

@Id

@GeneratedValue

@OneToMany(mappedBy ="classroom")//指定由对端来维护关系

@LazyCollection(LazyCollectionOption.EXTRA)//相当于lazy=exta让其智能化

基于注解配置的hibernate_第3张图片
Many

其中的注解配置是:

@Entity

@Table(name="t_student")

@Id

@GeneratedValue

@ManyToOne(fetch = FetchType.LAZY)//启用延迟加载策略

@JoinColumn(name="cid")//指定由这一端来维护关系,不让它生成中间表




OneToOne的双向配置:


基于注解配置的hibernate_第4张图片
不维护关系的一方
基于注解配置的hibernate_第5张图片
维护关系的一方

其中的注解配置为:

@Entity

@Table(name="t_idcard")

@Id

@GeneratedValue

@OneToOne(mappedBy ="person")//指定不由这端来维护关系,由对端来维护关系

其中的注解配置为:

@Entity

@Table(name="t_idcard")

@Id

@GeneratedValue

@OneToOne

@JoinColumn(name ="pid")//指定由这一端来维护关系




ManyToMany双向配置:

基于注解配置的hibernate_第6张图片
不维护关系的一方

其中的注解配置:

@Entity

@Table(name="t_admin")

@Id

@GeneratedValue

@ManyToMany(mappedBy ="admins")//指明不维护关系


基于注解配置的hibernate_第7张图片
维护关系的一方

@Entity

@Table(name="t_admin")

@Id

@GeneratedValue

@ManyToMany

@JoinTable(name="t_role_admin",joinColumns = {@JoinColumn(name="rid")},

inverseJoinColumns = {@JoinColumn(name ="aid")})

//指定生成的中间表的属性




两个ManyToOne代替ManyToMany


基于注解配置的hibernate_第8张图片
teacher

配置文件是:

@Entity

@Table(name="t_teacher_course")

@Id

@GeneratedValue

@OneToMany(mappedBy ="teacher")

@LazyCollection(LazyCollectionOption.EXTRA)

基于注解配置的hibernate_第9张图片
course

配置文件时:

@Entity

@Table(name="t_teacher_course")

@Id

@GeneratedValue

@OneToMany(mappedBy ="teacher")

@LazyCollection(LazyCollectionOption.EXTRA)

基于注解配置的hibernate_第10张图片
teachercourse


配置文件时:

@Entity

@Table(name="t_teacher_course")

@Id

@GeneratedValue

@ManyToOne

@JoinColumn(name="tid")

@ManyToOne

@JoinColumn(name="cid")



你可能感兴趣的:(基于注解配置的hibernate)