基于注解配置的hibernate
基于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")