基于xml的配置:
實體+實體.hbm.xml+hibernate.cfg.xml
基于annotation的配置:
實體+hibernate.cfg.xml
如下:
OneToMany的雙向配置:
其中的注解配置是:
@Entity
@Table(name="t_classroom")
@Id
@GeneratedValue
@OneToMany(mappedBy ="classroom")//指定由對端來維護關系
@LazyCollection(LazyCollectionOption.EXTRA)//相當于lazy=exta讓其智能化
其中的注解配置是:
@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
配置文件是:
@Entity
@Table(name="t_teacher_course")
@Id
@GeneratedValue
@OneToMany(mappedBy ="teacher")
@LazyCollection(LazyCollectionOption.EXTRA)
配置文件時:
@Entity
@Table(name="t_teacher_course")
@Id
@GeneratedValue
@OneToMany(mappedBy ="teacher")
@LazyCollection(LazyCollectionOption.EXTRA)
配置文件時:
@Entity
@Table(name="t_teacher_course")
@Id
@GeneratedValue
@ManyToOne
@JoinColumn(name="tid")
@ManyToOne
@JoinColumn(name="cid")