SSHM四大框架

基于注解配置的hibernate

2016-08-19  本文已影响311人  昵称已被占用了啊

基于xml的配置:

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

基于annotation的配置:

实体+hibernate.cfg.xml

如下:

实体
hibernate.cfg.xml


OneToMany的双向配置:

one

其中的注解配置是:

@Entity

@Table(name="t_classroom")

@Id

@GeneratedValue

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

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

Many

其中的注解配置是:

@Entity

@Table(name="t_student")

@Id

@GeneratedValue

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

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




OneToOne的双向配置:

不维护关系的一方
维护关系的一方

其中的注解配置为:

@Entity

@Table(name="t_idcard")

@Id

@GeneratedValue

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

其中的注解配置为:

@Entity

@Table(name="t_idcard")

@Id

@GeneratedValue

@OneToOne

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




ManyToMany双向配置:

不维护关系的一方

其中的注解配置:

@Entity

@Table(name="t_admin")

@Id

@GeneratedValue

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


维护关系的一方

@Entity

@Table(name="t_admin")

@Id

@GeneratedValue

@ManyToMany

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

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

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




两个ManyToOne代替ManyToMany

teacher

配置文件是:

@Entity

@Table(name="t_teacher_course")

@Id

@GeneratedValue

@OneToMany(mappedBy ="teacher")

@LazyCollection(LazyCollectionOption.EXTRA)

course

配置文件时:

@Entity

@Table(name="t_teacher_course")

@Id

@GeneratedValue

@OneToMany(mappedBy ="teacher")

@LazyCollection(LazyCollectionOption.EXTRA)

teachercourse

配置文件时:

@Entity

@Table(name="t_teacher_course")

@Id

@GeneratedValue

@ManyToOne

@JoinColumn(name="tid")

@ManyToOne

@JoinColumn(name="cid")



上一篇下一篇

猜你喜欢

热点阅读