1、学生表student和年级表grade

2、类StudentGrade

  • Student:
1
2
3
4
5
6
7
public class Student {
private int id;
private String name;
private int age;
private Grade grade;
//get…set
}
  • Grande
1
2
3
4
5
public class Grade {
private int id;
private String name;
//get…set
}

3、映射文件

  • Grade.hbm.xml
1
2
3
4
5
6
7
8
<hibernate-mapping package="cn.siggy.pojo">
<class name="Grade">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"/>
</class>
</hibernate-mapping>
  • Student.hbm.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<hibernate-mapping package="cn.siggy.pojo">
<class name="Student">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"/>
<property name="age"/>
<!-- 多对一 name表示属性名
class 指明属性对应的类
column指 数据库表中的列名
-->
<many-to-one name="grade" class="Grade" column="grade_id" foreign-key="fk_grade" not-null="true"/>
</class>
</hibernate-mapping>

4、测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@Test
public void testSave() throws HibernateException, SerialException, SQLException{
Session session = null;
Transaction tx = null;
try{
session = HibernateUtil.getSession();
tx = session.beginTransaction();
Grade grade = new Grade();
grade.setName("基础");
session.save(grade);
Student stu = new Student();
stu.setName("张三疯");
stu.setAge(22);
stu.setGrade(grade);
session.save(stu);

tx.commit();

}catch (HibernateException e) {
if(tx!=null)
tx.rollback();
e.printStackTrace();
throw e;
}finally{
HibernateUtil.closeSession();
}
}