新建一个类,包
· 这个类是父类,要注意,这里并没有将父类映射成表。
java 代码
- Person.java
- /*
- * Hibernate - 继承映射(每个具体类一个表)
- * 创建日期 2005-4-9
- * @author javamxj(分享java快乐)
- * @link Blog: htpp://javamxj.mblogger.cn
- * htpp://blog.csdn.net/javamxj/
- */
- package javamxj.inheritance.three;
- public abstract class Person {
- private Long id;
- private String name;
- /**
- * @hibernate.id
- * column="ID"
- * generator-class="hilo"
- * unsaved-value="null"
- */
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- /**
- * @hibernate.property
- * length = "24"
- */
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
java 代码
- Student.java
- package javamxj.inheritance.three;
- /**
- * @hibernate.class
- * table="Student"
- */
- public class Student extends Person {
- private String studentNumber;
- /**
- * @hibernate.property
- * length = "24"
- */
- public String getStudentNumber() {
- return studentNumber;
- }
- public void setStudentNumber(String studentNumber) {
- this.studentNumber = studentNumber;
- }
- }
java 代码
- Professor.java
- package javamxj.inheritance.three;
- /**
- * @hibernate.class
- * table="Professor"
- */
- public class Professor extends Person {
- private int salary;
- /**
- * @hibernate.property
- */
- public int getSalary() {
- return salary;
- }
- public void setSalary(int salary) {
- this.salary = salary;
- }
- }
xml 代码
- Professor.hbm.xml
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
- <hibernate-mapping
- >
- <class
- name="javamxj.inheritance.three.Professor"
- table="Professor"
- dynamic-update="false"
- dynamic-insert="false"
- select-before-update="false"
- optimistic-lock="version"
- >
- <id
- name="id"
- column="ID"
- type="java.lang.Long"
- unsaved-value="null"
- >
- <generator class="hilo">
- <!--
- To add non XDoclet generator parameters, create a file named
- hibernate-generator-params-Professor.xml
- containing the additional parameters and place it in your merge dir.
- -->
- </generator>
- </id>
- <property
- name="salary"
- type="int"
- update="true"
- insert="true"
- access="property"
- column="salary"
- />
- <property
- name="name"
- type="java.lang.String"
- update="true"
- insert="true"
- access="property"
- column="name"
- length="24"
- />
- <!--
- To add non XDoclet property mappings, create a file named
- hibernate-properties-Professor.xml
- containing the additional properties and place it in your merge dir.
- -->
- </class>
- </hibernate-mapping>
xml 代码
- Student.hbm.xml
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
- <hibernate-mapping
- >
- <class
- name="javamxj.inheritance.three.Student"
- table="Student"
- dynamic-update="false"
- dynamic-insert="false"
- select-before-update="false"
- optimistic-lock="version"
- >
- <id
- name="id"
- column="ID"
- type="java.lang.Long"
- unsaved-value="null"
- >
- <generator class="hilo">
- <!--
- To add non XDoclet generator parameters, create a file named
- hibernate-generator-params-Student.xml
- containing the additional parameters and place it in your merge dir.
- -->
- </generator>
- </id>
- <property
- name="studentNumber"
- type="java.lang.String"
- update="true"
- insert="true"
- access="property"
- column="studentNumber"
- length="24"
- />
- <property
- name="name"
- type="java.lang.String"
- update="true"
- insert="true"
- access="property"
- column="name"
- length="24"
- />
- <!--
- To add non XDoclet property mappings, create a file named
- hibernate-properties-Student.xml
- containing the additional properties and place it in your merge dir.
- -->
- </class>
- </hibernate-mapping>
数据库:
create table Student (
ID bigint not null,
studentNumber varchar(24),
name varchar(24),
primary key (ID)
)
ID bigint not null,
studentNumber varchar(24),
name varchar(24),
primary key (ID)
)
create table Professor (
ID bigint not null,
salary integer,
name varchar(24),
primary key (ID)
)
ID bigint not null,
salary integer,
name varchar(24),
primary key (ID)
)
java 代码
- Demo.java
- /*
- * Hibernate - 继承映射(每个具体类一个表)
- * 创建日期 2005-4-9
- * @author javamxj(分享java快乐)
- * @link Blog: htpp://javamxj.mblogger.cn
- * htpp://blog.csdn.net/javamxj/
- */
- package javamxj.inheritance.three;
- import java.util.Iterator;
- import java.util.List;
- import net.sf.hibernate.HibernateException;
- import net.sf.hibernate.Session;
- import net.sf.hibernate.SessionFactory;
- import net.sf.hibernate.Transaction;
- import net.sf.hibernate.cfg.Configuration;
- public class Demo {
- public static void main(String[] args) {
- try {
- new Demo();
- } catch (HibernateException he) {
- he.printStackTrace();
- }
- }
- public Demo() throws HibernateException {
- SessionFactory sf = new Configuration().configure()
- .buildSessionFactory();
- Session sess = sf.openSession();
- Transaction tx = null;
- try {
- tx = sess.beginTransaction();
- Student student = new Student();
- student.setName("张三");
- student.setStudentNumber("1234554321");
- sess.save(student);
- Professor professor = new Professor();
- professor.setName("李四");
- professor.setSalary(4300);
- sess.save(professor);
- tx.commit();
- } catch (HibernateException e) {
- if (tx != null)
- tx.rollback();
- throw e;
- } finally {
- sess.close();
- }
- sess = sf.openSession();
- tx = null;
- try {
- tx = sess.beginTransaction();
- List person = sess.find("from " + Person.class.getName());
- for (Iterator it = person.iterator(); it.hasNext();) {
- Person p = (Person) it.next();
- System.out.println("人员 '" + p.getName() + "' its class is: "
- + p.getClass().getName());
- }
- tx.commit();
- } catch (HibernateException e) {
- if (tx != null)
- tx.rollback();
- throw e;
- } finally {
- sess.close();
- }
- }
- }