Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7592142 建立时间:2006年5月29日 |

| |
[Hibernate]hibernate继承-joined-subclass 已更新(五) 软件技术
lhwork 发表于 2007/1/7 14:07:46 |
还是和前面一样。。先看先看由满江红翻译团队(RedSaga Translate Team)翻译的配置说明每个子类可能被映射到他自己的表中(每个子类一个表的策略)。被继承的状态通过和超类的表关联得到。我们使用<joined-subclass>元素。
<joined-subclass name="ClassName" (1) table="tablename" (2) proxy="ProxyInterface" (3) lazy="true|false" (4) dynamic-update="true|false" dynamic-insert="true|false" schema="schema" catalog="catalog" extends="SuperclassName" persister="ClassName" subselect="SQL expression" entity-name="EntityName" node="element-name"> <key .... > <property .... /> .....</joined-subclass>(1)name: 子类的全限定名。 (2)table: 子类的表名. (3)proxy (可选): 指定一个类或者接口,在延迟装载时作为代理使用。 (4)lazy (可选, 默认是 true): 设置为 lazy="false" 禁止使用延迟装载。 这种映射策略不需要指定辨别标志(discriminator)字段。但是,每一个子类都必须使用<key>元素指定一个表字段来持有对象的标识符。好了。。。开始 写代码了。。。1.建表500)this.width=500'>create table animal500)this.width=500'>(aid varchar(32) not null primary key)500)this.width=500'>500)this.width=500'>create table dog500)this.width=500'>(aid varchar(32) not null primary key,500)this.width=500'> dname varchar(16)500)this.width=500'>)500)this.width=500'>500)this.width=500'>create table cat500)this.width=500'>(aid varchar(32) not null primary key,500)this.width=500'> cname varchar(16)500)this.width=500'>) 2 写vo 2.1 Animal.java500)this.width=500'>package com.test;500)this.width=500'>500)this.width=500'>public class Animal500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'> private String aid;500)this.width=500'> //getter setter2.2 Car.java500)this.width=500'>package com.test;500)this.width=500'>500)this.width=500'>public class Cat extends Animal500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'> private String cname;500)this.width=500'>500)this.width=500'>//写上 get set 方法 2.3Dog.java500)this.width=500'>package com.test;500)this.width=500'>500)this.width=500'>public class Dog extends Animal500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'> private String dname;500)this.width=500'>//写getter setter3.写配置文件500)this.width=500'><?xml version="1.0"?>500)this.width=500'><!DOCTYPE hibernate-mapping500)this.width=500'> PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"500)this.width=500'> "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">500)this.width=500'>500)this.width=500'><hibernate-mapping>500)this.width=500'>500)this.width=500'> <class name="com.test.Animal" table="animal"> 500)this.width=500'>500)this.width=500'> <id name="aid" type="string" unsaved-value="null" >500)this.width=500'> <column name="aid" sql-type="char(32)" not-null="true"/>500)this.width=500'> <generator class="uuid.hex"/>500)this.width=500'> </id>500)this.width=500'> 500)this.width=500'> <joined-subclass name="com.test.Dog" table="dog">500)this.width=500'> <key column="aid"/>500)this.width=500'> <property name="dname">500)this.width=500'> <column name="dname" sql-type="varchar(16)"/>500)this.width=500'> </property>500)this.width=500'> </joined-subclass>500)this.width=500'>500)this.width=500'> <joined-subclass name="com.test.Cat" table="cat">500)this.width=500'> <key column="aid"/>500)this.width=500'> <property name="cname">500)this.width=500'> <column name="cname" sql-type="varchar(16)"/>500)this.width=500'> </property>500)this.width=500'> </joined-subclass>500)this.width=500'>500)this.width=500'> </class>500)this.width=500'>500)this.width=500'></hibernate-mapping>4.写上测试类500)this.width=500'>package com.test;500)this.width=500'>500)this.width=500'>import net.sf.hibernate.Session;500)this.width=500'>import net.sf.hibernate.SessionFactory;500)this.width=500'>import net.sf.hibernate.cfg.Configuration;500)this.width=500'>import net.sf.hibernate.*;500)this.width=500'>import java.sql.*;500)this.width=500'>import java.util.List;500)this.width=500'>import java.util.Iterator;500)this.width=500'>500)this.width=500'>public class TestInherit2500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'> SessionFactory sf;500)this.width=500'> Session session;500)this.width=500'> public TestInherit2()500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> try500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> Configuration cfg = new Configuration();500)this.width=500'> sf = cfg.addClass(Animal.class).buildSessionFactory();500)this.width=500'> }500)this.width=500'> catch(HibernateException ex)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> ex.printStackTrace();500)this.width=500'> }500)this.width=500'> }500)this.width=500'> //插入500)this.width=500'> public void doCreate()500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> try500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> session = sf.openSession();500)this.width=500'>500)this.width=500'> Dog dog = new Dog();500)this.width=500'> dog.setDname("small dog");500)this.width=500'> Cat cat = new Cat();500)this.width=500'> cat.setCname("small cat");500)this.width=500'> session.save(dog);500)this.width=500'> session.save(cat);500)this.width=500'> session.flush();500)this.width=500'> session.connection().commit();500)this.width=500'>500)this.width=500'> }500)this.width=500'> catch(HibernateException ex)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> ex.printStackTrace();500)this.width=500'> }500)this.width=500'> catch(SQLException ex1)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> ex1.printStackTrace();500)this.width=500'> }500)this.width=500'> finally500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'>500)this.width=500'> try500)this.width=500'>{500)this.width=500'> session.close();500)this.width=500'> }500)this.width=500'>500)this.width=500'> catch(HibernateException ex2)500)this.width=500'>{500)this.width=500'> }500)this.width=500'> }500)this.width=500'>500)this.width=500'> }500)this.width=500'> //查询500)this.width=500'> public void doQuery()500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'>500)this.width=500'> try500)this.width=500'>{500)this.width=500'> session = sf.openSession();500)this.width=500'> Query q = session.createQuery("select d from Dog as d");500)this.width=500'> List l = q.list();500)this.width=500'> Dog dog = null;500)this.width=500'> Cat cat = null;500)this.width=500'> for(int i=0;i<l.size();i++)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> dog = (Dog)l.get(i);500)this.width=500'> System.out.println(dog.getDname());500)this.width=500'> }500)this.width=500'> }500)this.width=500'>500)this.width=500'> catch(HibernateException ex)500)this.width=500'>{500)this.width=500'> ex.printStackTrace();500)this.width=500'> }500)this.width=500'>500)this.width=500'> finally500)this.width=500'>{500)this.width=500'>500)this.width=500'> try500)this.width=500'>{500)this.width=500'> session.close();500)this.width=500'> }500)this.width=500'>500)this.width=500'> catch(HibernateException ex2)500)this.width=500'>{500)this.width=500'> }500)this.width=500'> }500)this.width=500'> }500)this.width=500'> public static void main(String[] args)500)this.width=500'>500)this.width=500'> 500)this.width=500'>{500)this.width=500'> TestInherit2 t = new TestInherit2();500)this.width=500'> //t.doCreate();500)this.width=500'> t.doQuery();500)this.width=500'> }500)this.width=500'>}500)this.width=500'> |
|
|