hibernate中单向一对多关系:
做留言板项目的发现自己hibernate种对表之间的关系有些陌生,之前一段时间,粗略的复习和se的东西以及数据结构的知识,想尽量让自己知道的东西更多一点,希望能在暑假可以找到一份实习的工作,让自己大四能彻底来一次接触社会。
我学习过的hibernate中有单向一对多关联,单向多对一关联,以及多对多的关联。
单向一对多,我理解是数据库中,一个实体包含多个其他实体,叫做一对多,比如一个班级对应多个学生,一个学校对应多个班级,其中班级和学校是一,学生和班级是多。
Java代码的实现:
domain包:Grande类,Student类。test包:Test类。
首先建立班级实体类:
包含gid,gname,gcourse,以及学生的集合Set<Student> student=new hashSet<Student>();
private int id;
private String name;
private String coures;
private Set<Student> st=new HashSet<Student>();
添加get和set方法以及构造器。
然后是映射文件Grade.hbm.xml:
<hibernate-mapping>
<class name="domain.Grade" table="grade">
<id name="" type="">
<colum name="">
<generator class="主键生成策略">
</id>
<property name="" colum="" type=""/>
<property />
......
<set name="student" table="student">
<key colum="id">外键所对应的主键
<one-to-many class="domain.Student" />
</set>
</class>
</hibernate-mapping>
映射文件完成。
省去学生的实体类以及映射文件
...............
测试类:
public class Test {
public static void main(String[] args) {
add();
}
public static void add(){
Grade g=new Grade(1, "java", "企业级项目");
Student s=new Student(1, "陈龙");
//
g.getSt().add(s);
Session session=Service.getSession();Service是我写的session会话工程
Transaction t=session.beginTransaction();
session.save(g);
session.save(s);
t.commit();
session.close();
}
}
hibernate之单向一对多完成