完成教材第199页实例8.1,采用“每个类一个数据表”的方式,实现继承关系映射
项目结构
注意vo包里面作为外键的类需要继承Xs表 不然测试的时候 . (点)的时候不会出来set学生表的信息 即还是只对研究生表进行插入
大部分还是通过Hibernate开发能力自动导的
如果还不会的话,请参考我的这篇文章:
效果图
核心代码
HibernateTest.java
package org.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.util.HibernateSessionFactory;
import org.vo.Yjs;
public class HibernateTest {
public Session session;
public static void main(String[] args) throws ParseException {
HibernateTest ht=new HibernateTest();
ht.getCurrentSession();
ht.saveYjs();
System.out.println("增加一条记录后结果========");
ht.closeSession();
}
//获得Session方法
public void getCurrentSession(){
session=HibernateSessionFactory.getSession();
}
//关闭Seesion方法
public void closeSession(){
if(session!=null){
HibernateSessionFactory.closeSession();
}
}
//插入一条研究生记录
public void saveYjs() throws ParseException{
Yjs yjs=new Yjs();
yjs.setXh("201701020124");
yjs.setXm("杨超逸");
String str="1999-08-04";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date birthday = sdf.parse(str);
yjs.setBir(birthday);
yjs.setResearchResult("10项成果");
Transaction ts=session.beginTransaction();
session.save(yjs);
ts.commit();
}
}
Xs.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.vo.Xs" table="xs" catalog="test">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="xh" type="java.lang.String">
<column name="xh" length="50" not-null="true">
<comment>学号</comment>
</column>
</property>
<property name="xm" type="java.lang.String">
<column name="xm" length="50">
<comment>姓名</comment>
</column>
</property>
<property name="bir" type="java.sql.Timestamp">
<column name="bir" length="19">
<comment>出生时间</comment>
</column>
</property>
<!-- 该标签用来定义继承Xs的子类与数据库表的关系 -->
<joined-subclass name="org.vo.Yjs" table="yjs">
<!--子类的主键 -->
<key column="xsId"></key>
<!-- 子类中特有的属性 -->
<property name="researchResult" column="researchResult" type="string"></property>
</joined-subclass>
<!-- 该标签用来定义继承Xs的子类与数据库表的关系 -->
<joined-subclass name="org.vo.Bks" table="bks">
<!--子类的主键 -->
<key column="xsId"></key>
<!-- 子类中特有的属性 -->
<property name="ky" column="ky" type="boolean"></property>
</joined-subclass>
</class>
</hibernate-mapping>
学如逆水行舟,不进则退