∪∩deniable Design

          個人JAVA版GAE(google app engine),struts2+jpa+jQuery開發(fā),互相交流 http://iunbug.appspot.com/

          關于如何配置請參看:Hibernate學習筆記(一)--用MyEclipse 6.5+MySQL 5.0的環(huán)境跑起來

          準備:建表

          用MySQL在名為STMS數(shù)據(jù)庫中建表

          Titem

          Tbook

          Tdvd

           src/org.lxh.hibernate3.TItem.java

           1package org.lxh.hibernate3;
           2/** 
           3 * @author ∪∩BUG E-mail: tidelgl@163.com
           4 * @version Aug 31, 2008 3:27:51 PM 
           5 * @父類
           6 */

           7public class TItem {
           8
           9    private String id;
          10    private String name;
          11    private String manufacturer;
          12
          13    public String getId() {
          14        return id;
          15    }

          16
          17    public void setId(String id) {
          18        this.id = id;
          19    }

          20
          21    public String getName() {
          22        return name;
          23    }

          24
          25    public void setName(String name) {
          26        this.name = name;
          27    }

          28
          29    public String getManufacturer() {
          30        return manufacturer;
          31    }

          32
          33    public void setManufacturer(String manufacturer) {
          34        this.manufacturer = manufacturer;
          35    }

          36
          37}

          38


           src/org.lxh.hibernate3.TBook.java

           1package org.lxh.hibernate3;
           2
           3/**
           4 * @author ∪∩BUG E-mail: tidelgl@163.com
           5 * @version Aug 31, 2008 3:31:47 PM @ 繼承父類TItem
           6 */

           7public class TBook extends TItem {
           8
           9    private int pageCount;
          10
          11    public int getPageCount() {
          12        return pageCount;
          13    }

          14
          15    public void setPageCount(int pageCount) {
          16        this.pageCount = pageCount;
          17    }

          18}

          19


           src/org.lxh.hibernate3.TDvd.java

           1package org.lxh.hibernate3;
           2/** 
           3 * @author ∪∩BUG E-mail: tidelgl@163.com
           4 * @version Aug 31, 2008 3:34:06 PM 
           5 * @ 繼承父類TItem
           6 */

           7public class TDvd extends TItem {
           8
           9    private String regionCode;
          10
          11    public String getRegionCode() {
          12        return regionCode;
          13    }

          14
          15    public void setRegionCode(String regionCode) {
          16        this.regionCode = regionCode;
          17    }

          18
          19}

          20


           src/org.lxh.hibernate3.Titem.hbm.xml

           1xml version="1.0" encoding="utf-8"?>
           2DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
           3"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
           4
           7<hibernate-mapping>
           8    
           9    <class name="org.lxh.hibernate3.TItem" table="titem"
          10        catalog="stms">
          11        <id name="id" type="java.lang.String">
          12            <column name="id" length="32" />
          13            <generator class="assigned" />
          14        id>
          15        <property name="name" type="java.lang.String">
          16            <column name="name" length="20" not-null="true" />
          17        property>
          18        <property name="manufacturer" type="java.lang.String">
          19            <column name="manufacturer" length="20" />
          20        property>
          21
          22        
          28        <joined-subclass name="org.lxh.hibernate3.TBook"
          29            table="TBook">
          30            <key column="id">key>
          31            <property name="pageCount" type="int"
          32                column="pagecount">
          33            property>
          34        joined-subclass>
          35        <joined-subclass name="org.lxh.hibernate3.TDvd" table="TDvd">
          36            <key column="id">key>
          37            <property name="regionCode" type="string"
          38                column="regioncode">
          39            property>
          40        joined-subclass>
          41    class>
          42hibernate-mapping>
          43


           src/hibernate.cfg.xml

           1xml version='1.0' encoding='UTF-8'?>
           2DOCTYPE hibernate-configuration PUBLIC
           3          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
           4          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
           5
           6
           7<hibernate-configuration>
           8
           9<session-factory>
          10    <property name="connection.username">rootproperty>
          11    <property name="connection.url">
          12        jdbc:mysql://localhost:3306/STMS
          13    property>
          14    <property name="dialect">
          15        org.hibernate.dialect.MySQLDialect
          16    property>
          17    <property name="myeclipse.connection.profile">
          18        MySql_localhost
          19    property>
          20    <property name="connection.password">rootproperty>
          21    <property name="connection.driver_class">
          22        com.mysql.jdbc.Driver
          23    property>
          24    <property name="show_sql">trueproperty>
          25
          26    
          27    <mapping resource="org/lxh/hibernate3/Titem.hbm.xml" />
          28
          29session-factory>
          30
          31hibernate-configuration>


           src/org.lxh.hibernate3.TItemOperate.java

           1package org.lxh.hibernate3;
           2
           3
           4
           5import java.util.Iterator;
           6
           7import org.hibernate.Query;
           8import org.hibernate.Session;
           9import org.hibernate.SessionFactory;
          10import org.hibernate.cfg.Configuration;
          11
          12/** 
          13 * @author ∪∩BUG E-mail: tidelgl@163.com
          14 * @version Aug 31, 2008 4:08:14 PM 
          15 * @具體操作Hibernate類
          16 */

          17public class TItemOperate {
          18    private Session session;
          19
          20    public TItemOperate() {
          21        //找到Hibernate配置文件
          22        Configuration config = new Configuration().configure();
          23        
          24        //從全局文件中取出SessionFactory
          25        SessionFactory factory = config.buildSessionFactory();
          26        
          27        //從SessionFactory取出一個session
          28        this.session = factory.openSession();
          29    }

          30
          31    //插入操作
          32    //TBook和TDvd類都是TItem的子類,所以只需往TItem里插入就可以了.
          33    public void insert(TItem item) {
          34        //執(zhí)行語句
          35        this.session.save(item);
          36        
          37        //開始事務.提交事務
          38        this.session.beginTransaction().commit();
          39        this.session.close();
          40    }

          41    
          42    //查詢操作
          43    //TBook和TDvd類都是TItem的子類,所以只需查詢TItem的ID就可以了.
          44    public TItem QueryById(String id) {
          45        TItem item = new TItem();
          46        String hql = "FROM TItem as t WHERE t.id=?";
          47        Query q = this.session.createQuery(hql);
          48        q.setString(0, id);
          49        Iterator iter = q.list().iterator();
          50        if(iter.hasNext()){
          51            item = (TItem)iter.next();
          52        }

          53        return item;
          54    }

          55}

          56


           src/org.lxh.hibernate3.Test.java

           1package org.lxh.hibernate3;
           2
           3/**
           4 * @author ∪∩BUG E-mail: tidelgl@163.com
           5 * @version Aug 31, 2008 4:26:26 PM
           6 * @測試類
           7 */

           8public class Test {
           9
          10    /**
          11     * @param args
          12     */

          13    /**
          14     * @param args
          15     */

          16    public static void main(String[] args) {
          17
          18        TItemOperate to = new TItemOperate();
          19        
          20        /*
          21        // 向數(shù)據(jù)庫中插入數(shù)據(jù)
          22        TBook book = new TBook();
          23        book.setId("02");
          24        book.setName("Hibernate");
          25        book.setPageCount(31);
          26        book.setManufacturer("Hibernate.org");
          27
          28        to.insert(book);
          29        
          30        TDvd dvd = new TDvd();
          31        dvd.setId("03");
          32        dvd.setManufacturer("Apache.org");
          33        dvd.setName("Struts2");
          34        dvd.setRegionCode("87");
          35        
          36        to.insert(dvd);
          37        */

          38        
          39        //查詢數(shù)據(jù)庫
          40        TBook book = (TBook)to.QueryById("01");
          41        System.out.println(book.getName());
          42    }

          43
          44}

          45

           

          例子結構:


          評論

          # re: Hibernate學習筆記(四)-- 實體層設計之Table per subclass   回復  更多評論   

          2008-09-01 17:34 by ∪∩BUG
          學到這里才感慨java沒有白學.
          主站蜘蛛池模板: 罗定市| 道孚县| 泸定县| 陈巴尔虎旗| 阳谷县| 怀仁县| 五河县| 揭阳市| 中阳县| 鹤壁市| 慈利县| 淮安市| 乌兰浩特市| 揭阳市| 正镶白旗| 临泉县| 外汇| 威远县| 诸暨市| 连山| 荆州市| 探索| 睢宁县| 黄平县| 鄂尔多斯市| 神木县| 法库县| 漳浦县| 青河县| 琼中| 盘山县| 台州市| 桂阳县| 嘉鱼县| 通江县| 儋州市| 石阡县| 武陟县| 怀集县| 太仆寺旗| 崇信县|