7.0单向多对一的关联映射
Posted chxbar.cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.0单向多对一的关联映射相关的知识,希望对你有一定的参考价值。
1.学生表student 和年级表 grade
2.类Student 和Grade类
public class Student { private int id; private String name; private int age; private Grade grade; //get…set }
public class Grade { private int id; private String name; //get…set }
3.映射文件
Grade.hbm.xml:
<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:
<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.测试代码
package cn.siggy.test; import java.sql.SQLException; import javax.sql.rowset.serial.SerialException; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.Test; import cn.siggy.pojo.Grade; import cn.siggy.pojo.Student; import cn.siggy.util.HibernateUtil; public class HibernateTest { @Test public void testCreateDB(){ Configuration cfg = new Configuration().configure(); SchemaExport se = new SchemaExport(cfg); //第一个参数 是否生成ddl脚本 第二个参数 是否执行到数据库中 se.create(true, true); } @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(); } } @Test public void testGet(){ Session session = null; Transaction tx = null; try{ session = HibernateUtil.getSession(); tx = session.beginTransaction(); //取数据 Student stu = (Student)session.get(Student.class, 1); System.out.println("student——name:"+stu.getName()+"--grade-name:"+stu.getGrade().getName()); tx.commit(); }catch (HibernateException e) { if(tx!=null) tx.rollback(); e.printStackTrace(); throw e; }finally{ HibernateUtil.closeSession(); } } }
5.测试结果
控制台信息:
数据库表信息:
以上是关于7.0单向多对一的关联映射的主要内容,如果未能解决你的问题,请参考以下文章