<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    想飛就別怕摔

    大爺的并TM罵人

    Hibernate創建數據庫表(一對一and一對多)

    使用的數據庫是MSSQL,庫名hibernate,預建立的表有3張。
    分別是Student(學生)表,字段名:id、team_di、name、cardId、age。
    team(班級)表,字段名:id、team_id。
    Certificate(身份證)表,字段名:id、describe。
    Student與Certificate是一對一的關系,team與Student是一對多的關系。
    1.建立工程->加入Hibernate能力(自動生成.cfg.xml文件)代碼如下:
     1<?xml version='1.0' encoding='UTF-8'?>
     2<!DOCTYPE hibernate-configuration PUBLIC
     3          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     5
     6<!-- Generated by MyEclipse Hibernate Tools.                   -->
     7<hibernate-configuration>
     8
     9<session-factory>
    10    <property name="dialect">
    11        org.hibernate.dialect.SQLServerDialect
    12    </property>
    13    <property name="connection.url">
    14        jdbc:microsoft:sqlserver://localhost:1433;databasename=hibernate
    15    </property>
    16    <property name="connection.username">sa</property>
    17    <property name="connection.password">sa</property>
    18    <property name="connection.driver_class">
    19        com.microsoft.jdbc.sqlserver.SQLServerDriver
    20    </property>
    21    <property name="myeclipse.connection.profile">MsSQL</property>
    22
    23    <property name="hibernate.hbm2ddl.auto">create-drop</property>
    24    <property name="show_sql">true</property>
    25
    26
    27    <mapping resource="com/zzn/hibernate1/Certificate.hbm.xml" />
    28    <mapping resource="com/zzn/hibernate1/Student.hbm.xml" />
    29    <mapping resource="com/zzn/hibernate1/Team.hbm.xml" />
    30
    31
    32</session-factory>
    33
    34</hibernate-configuration>
    我們小分析一下要注意的代碼。
    14行的databasename=hibernate是你要讓hibernate把數據庫表建立到那個數據庫里,需要你來指定。如果不指定就加到默認的庫中。
    23行的<property name="hibernate.hbm2dll.auro"></property>千萬不要忘寫。中間的參數可以是create-drop或update,如果你建立的表名在數據庫中已有,那么create-drop是將它刪然后建立你用hibernate要建立的表,而update則是更新你已有的數據庫表,原有的列都不會被刪除。
    24行是在console中顯示執行的SQL語句。
    27-29行是即將要建立的映射文件。
    2.下面我們要編寫映射文件。
    Student.hbm.xml
     1<?xml version="1.0" encoding="UTF-8"?>
     2<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4<hibernate-mapping>
     5    <class name="com.zzn.hibernate1.Student" table="student" lazy="true">
     6        <id name="id" unsaved-value="null">
     7            <generator class="uuid.hex"></generator>
     8        </id>
     9        <property name="cardid" type="string"></property>
    10        <property name="name" type="string"></property>
    11        <property name="age" type="int"></property>
    12        <one-to-one name="cer" class="com.zzn.hibernate1.Certificate"
    13         fetch="join" cascade="all">
    14        </one-to-one>
    15        <many-to-one name="team" class="com.zzn.hibernate1.Team" column="team_id" fetch="join" cascade="all>
    16        </many-to-one>
    17    </class>
    18</hibernate-mapping>
    Certificate.hbm.xml
     1<?xml version="1.0" encoding="UTF-8"?>
     2<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4<hibernate-mapping>
     5    <class name="com.zzn.hibernate1.Certificate" table="certificate" lazy="true">
     6        <id name="id">
     7            <generator class="foreign">
     8                <param name="property">stu</param>
     9            </generator>
    10        </id>
    11        <one-to-one name="stu" class="com.zzn.hibernate1.Student" fetch="join" constrained="true">
    12        </one-to-one>
    13        <property name="describe" column="describes" type="string"></property>
    14     </class>
    15</hibernate-mapping>
    Team.hbm.xml
     1<?xml version="1.0" encoding="UTF-8"?>
     2<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4<hibernate-mapping>
     5    <class name="com.zzn.hibernate1.Team" table="team" lazy="true">
     6        <id name="id" unsaved-value="null">
     7            <generator class="uuid.hex">
     8            </generator>
     9        </id>
    10        <property name="teamName" type="string"></property>
    11        <set name="students" inverse="true" fetch="select" lazy="true">
    12            <key column="team_id"></key>
    13            <one-to-many class="com.zzn.hibernate1.Student"/>
    14        </set>
    15    </class>
    16</hibernate-mapping>
    編寫持久化類
    Student.java
    package com.zzn.hibernate1;

    public class Student {
        
    private String id;
        
    private String name;
        
    private String cardid;
        
    private int age;
        
    private Certificate cer;
        
    private Team team;
    //省略getter和settet方法
    Certificate.java
    package com.zzn.hibernate1;

    public class Certificate {
        
    private String id;
        
    private String describe;
        
    private Student stu;
    //省略getter和settet方法
    Team.java
    package com.zzn.hibernate1;

    import java.util.HashSet;
    import java.util.Set;

    public class Team {
        
    private String id;
        
    private Set students=new HashSet();
        
    private String teamName;
    //省略getter和setter方法
    以上都完成就可以寫個測試文件測試一下了。
    Test.java
    package com.zzn.hibernate1;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;

    public class Test {

        
    public static void main(String[] args) {
            Configuration conf 
    = new Configuration().configure();
            
            SessionFactory sf 
    = conf.buildSessionFactory();
            
            Session sess 
    = sf.openSession();
            
            Transaction tx 
    = sess.beginTransaction();
            
            Student stu
    = new Student();
            Certificate cer
    =new Certificate();
            Team t
    =new Team();
            
            stu.setId(
    "1");
            stu.setAge(
    22);
            stu.setCardid(
    "10001");
            stu.setName(
    "xiaoming");
            stu.setTeam(t);
            stu.setCer(cer);
            
            t.setId(
    "1001");
            t.setTeamName(
    "3.2");
            
            cer.setDescribe(
    "asdf");
            cer.setStu(stu);
            
            sess.save(stu);
            tx.commit();
            sess.close();
            
            
            
        }


    }


    posted on 2008-07-25 11:02 生命的綻放 閱讀(3262) 評論(2)  編輯  收藏 所屬分類: Hibernate

    評論

    # re: Hibernate創建數據庫表(一對一and一對多) 2008-07-26 23:01 張景如

    看不懂,呵呵。太高深了。  回復  更多評論   

    # re: Hibernate創建數據庫表(一對一and一對多) 2009-11-04 04:16 youke

    感謝,看了你的,才知道我的外鍵關聯寫錯了!浪費我好多時間  回復  更多評論   

    <2008年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    常用鏈接

    留言簿(5)

    隨筆分類(94)

    隨筆檔案(93)

    文章分類(5)

    文章檔案(5)

    相冊

    JAVA之橋

    SQL之音

    兄弟之窗

    常用工具下載

    積分與排名

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲综合激情五月色一区| 亚洲毛片无码专区亚洲乱| 处破女第一次亚洲18分钟| 好男人www免费高清视频在线 | 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 日本一区二区在线免费观看 | 亚洲一区视频在线播放| 农村寡妇一级毛片免费看视频| 小小影视日本动漫观看免费 | 大地影院MV在线观看视频免费| 亚洲人成色777777在线观看| 在线涩涩免费观看国产精品| 91亚洲国产成人精品下载| 国产一卡2卡3卡4卡2021免费观看| 亚洲小说图区综合在线| 国产免费怕怕免费视频观看| 国产精品玖玖美女张开腿让男人桶爽免费看 | 免费的黄色的网站| 久久亚洲AV无码西西人体| 日日麻批免费40分钟无码| 亚洲人成网站在线观看播放青青| 成在人线AV无码免费| 无码免费又爽又高潮喷水的视频| 亚洲色WWW成人永久网址| 99在线热视频只有精品免费| 国产91在线|亚洲| 亚洲第一永久AV网站久久精品男人的天堂AV | 国产精品区免费视频| 亚洲av无码电影网| 啊v在线免费观看| 久久99免费视频| 国产成人精品日本亚洲网址| 四虎免费久久影院| 久久99精品视免费看| 亚洲女女女同性video| 最新国产AV无码专区亚洲| 亚欧免费视频一区二区三区| 日韩色日韩视频亚洲网站 | 国产成人精品日本亚洲11| 国产AV无码专区亚洲AWWW| 4399好看日本在线电影免费|