当前页面: 开发资料首页 → Eclipse 专题 → Eclipse快速上手Hibernate--4. 继承映射(1)
摘要: Eclipse快速上手Hibernate--4. 继承映射(1)
Animal.java
/* * Hibernate - 继承映射(每个类层次一个表) * 创建日期 2005-4-9 * @author javamxj(分享java快乐) * @link Blog: htpp://javamxj.mblogger.cn * htpp://blog.csdn.net/javamxj/ */ package javamxj.inheritance.one; /** * @hibernate.class * table="Animal" * discriminator-value="Animal" * @hibernate.discriminator * column="ANIMAL_TYPE" * type="string" * length = "10" */ public abstract class Animal { 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; } public abstract void makeSound(); }
package javamxj.inheritance.one; /** * @hibernate.subclass * discriminator-value="Cat" */ public class Cat extends Animal { private String FurColor; public void makeSound() { System.out.println("喵喵"); } /** * @hibernate.property * length = "24" */ public String getFurColor() { return FurColor; } public void setFurColor(String furColor) { FurColor = furColor; } }</td></tr>
package javamxj.inheritance.one; /** * @hibernate.subclass * discriminator-value="Dog" */ public class Dog extends Animal { private String category; public void makeSound() { System.out.println("汪汪"); } /** * @hibernate.property * length = "24" */ public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } }</td></tr>
build.xml
<?xml version="1.0" encoding="GBK"?>
Animal.hbm.xml
<?xml version="1.0" encoding="GBK"?> hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">To add non XDoclet generator parameters, create a file named hibernate-generator-params-Animal.xml containing the additional parameters and place it in your merge dir. To add non XDoclet property mappings, create a file named hibernate-properties-Animal.xml containing the additional properties and place it in your merge dir. To add non XDoclet property mappings, create a file named hibernate-properties-Cat.xml containing the additional properties and place it in your merge dir. To add non XDoclet property mappings, create a file named hibernate-properties-Dog.xml containing the additional properties and place it in your merge dir.
<?xml version="1.0" encoding="GBK"?> hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"></td></tr>net.sf.hibernate.dialect.MySQLDialect true false root javamxj com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/HibernateTest?useUnicode=true&characterEncoding=GBK
Demo.java
package javamxj.inheritance.one; 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(); Cat cat = new Cat(); cat.setName("小白"); cat.setFurColor("白色"); sess.save(cat); Dog dog = new Dog(); dog.setName("小黑"); dog.setCategory("京巴狗"); sess.save(dog); 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 animals = sess.find("from " + Animal.class.getName()); for (Iterator it = animals.iterator(); it.hasNext();) { Animal animal = (Animal) it.next(); System.out.println("动物 '" + animal.getName() + "' 所在类是: " + animal.getClass().getName()); System.out.print("发出叫声: "); animal.makeSound(); } tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); throw e; } finally { sess.close(); } } }