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

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

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

    想飛就別怕摔

    大爺?shù)牟M罵人

    Hibernate創(chuàng)建數(shù)據(jù)庫表(一對一and一對多)

    使用的數(shù)據(jù)庫是MSSQL,庫名hibernate,預(yù)建立的表有3張。
    分別是Student(學(xué)生)表,字段名:id、team_di、name、cardId、age。
    team(班級)表,字段名:id、team_id。
    Certificate(身份證)表,字段名:id、describe。
    Student與Certificate是一對一的關(guān)系,team與Student是一對多的關(guān)系。
    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把數(shù)據(jù)庫表建立到那個數(shù)據(jù)庫里,需要你來指定。如果不指定就加到默認(rèn)的庫中。
    23行的<property name="hibernate.hbm2dll.auro"></property>千萬不要忘寫。中間的參數(shù)可以是create-drop或update,如果你建立的表名在數(shù)據(jù)庫中已有,那么create-drop是將它刪然后建立你用hibernate要建立的表,而update則是更新你已有的數(shù)據(jù)庫表,原有的列都不會被刪除。
    24行是在console中顯示執(zhí)行的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創(chuàng)建數(shù)據(jù)庫表(一對一and一對多) 2008-07-26 23:01 張景如

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

    # re: Hibernate創(chuàng)建數(shù)據(jù)庫表(一對一and一對多) 2009-11-04 04:16 youke

    感謝,看了你的,才知道我的外鍵關(guān)聯(lián)寫錯了!浪費(fèi)我好多時間  回復(fù)  更多評論   

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

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(5)

    隨筆分類(94)

    隨筆檔案(93)

    文章分類(5)

    文章檔案(5)

    相冊

    JAVA之橋

    SQL之音

    兄弟之窗

    常用工具下載

    積分與排名

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲导航深夜福利| 亚洲人成未满十八禁网站| 免费看h片的网站| 亚洲国产成人久久综合| 亚洲色欲色欲www在线丝| 免费在线观看视频网站| 日韩一区二区三区免费播放| 亚洲av无码成h人动漫无遮挡| 无码日韩人妻av一区免费| 又黄又大的激情视频在线观看免费视频社区在线 | 亚洲看片无码在线视频| www.亚洲色图.com| 亚洲国产av一区二区三区| 毛片在线播放免费观看| 亚洲精品无码久久久久YW| 亚洲午夜久久久久妓女影院| 亚洲第一成年免费网站| 丁香花在线视频观看免费| 亚洲成AV人片在WWW| 亚洲最新视频在线观看| 免费在线观看日韩| 我们的2018在线观看免费高清| 一个人看的在线免费视频| 亚洲妇女熟BBW| 亚洲天堂男人天堂| 美腿丝袜亚洲综合| 日韩精品无码人妻免费视频| 午夜精品一区二区三区免费视频| 人人爽人人爽人人片A免费| 日韩亚洲人成在线| 亚洲成a人片在线观看中文app| 国产偷国产偷亚洲清高动态图| 好男人视频社区精品免费| 8x成人永久免费视频| 亚洲一级片在线播放| 亚洲国产精品SSS在线观看AV| 亚洲а∨天堂久久精品| 大陆一级毛片免费视频观看i| 免费无码一区二区三区| 久久久久久噜噜精品免费直播| 精品在线免费视频|