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

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

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

    Hibernate學(xué)習(xí)之一對一關(guān)聯(lián)

    Posted on 2006-12-26 15:48 李鵬 閱讀(682) 評論(0)  編輯  收藏 所屬分類: hibernate

    今天練習(xí)了一下hibernate的一對一關(guān)聯(lián)(主鍵關(guān)聯(lián)),其實(shí)就是抄了一遍書上的例子。
    用的例子是《深入淺出hibernate》的一對一關(guān)聯(lián)例子,中國公民與護(hù)照形成的一對一主鍵關(guān)聯(lián)。
    代碼如下:

    數(shù)據(jù)庫使用的MSSQLServer2000,我已經(jīng)導(dǎo)出SQL語句如下:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TPassport_TUser]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
    ALTER TABLE [dbo].[TPassport] DROP CONSTRAINT FK_TPassport_TUser
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TPassport]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[TPassport]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TUser]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[TUser]
    GO

    CREATE TABLE [dbo].[TPassport] (
     [id] [int] NOT NULL ,
     [serial] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [expiry] [int] NOT NULL
    ) ON [PRIMARY]
    GO

    CREATE TABLE [dbo].[TUser] (
     [id] [int] IDENTITY (1, 1) NOT NULL ,
     [name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [age] [int] NOT NULL ,
     [gender] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
    ) ON [PRIMARY]
    GO

    ALTER TABLE [dbo].[TPassport] WITH NOCHECK ADD
     CONSTRAINT [PK_TPassport] PRIMARY KEY  CLUSTERED
     (
      [id]
     )  ON [PRIMARY]
    GO

    ALTER TABLE [dbo].[TUser] WITH NOCHECK ADD
     CONSTRAINT [PK_TUser] PRIMARY KEY  CLUSTERED
     (
      [id]
     )  ON [PRIMARY]
    GO

     CREATE  INDEX [F_TUser] ON [dbo].[TUser]([id]) ON [PRIMARY]
    GO

     CREATE  INDEX [FK_TUser] ON [dbo].[TUser]([id]) ON [PRIMARY]
    GO

    ALTER TABLE [dbo].[TPassport] ADD
     CONSTRAINT [FK_TPassport_TUser] FOREIGN KEY
     (
      [id]
     ) REFERENCES [dbo].[TUser] (
      [id]
     )
    GO

    復(fù)制以上代碼到查詢分析器,即可生成相應(yīng)數(shù)據(jù)庫。呵呵

    然后就是POJO了,有兩個(gè),分別是:
    eg.one2one.bean.TPassport;
    package eg.one2one.bean;

    import java.io.Serializable;

    public class TPassport implements Serializable {
     private static final long serialVersionUID = 1L;

     private Integer id;

     private String serial;

     private Integer expiry;

     private TUser user;

    /*
     *  省略的getter()和setter()
    **/
    }

    eg.one2one.bean.TUser;

    package eg.one2one.bean;

    import java.io.Serializable;

    public class TUser implements Serializable {

     private static final long serialVersionUID = 1L;

     private Integer id;

     private String name;

     private String gender;

     private Integer age;

     private TPassport passport;

    /*
     *  省略的getter()和setter()
    **/

    }

    接下來就應(yīng)該書寫mapping文件了。
    TPassport.hbm.xml
    <hibernate-mapping>
      <class name="eg.one2one.bean.TPassport" table="TPassport">
        <id name="id" type="java.lang.Integer" column="id">
          <generator class="foreign">
            <param name="property">user</param>
          </generator>
        </id>
        <one-to-one name="user"
                    class="eg.one2one.bean.TUser"
                    constrained="true"></one-to-one>
        <property name="serial" type="java.lang.String" column="serial"></property>
        <property name="expiry" type="java.lang.Integer" column="expiry"></property>
      </class>
    </hibernate-mapping>

    TUser.hbm.xml
    <hibernate-mapping>
      <class name="eg.one2one.bean.TUser" table="TUser">
        <id name="id" type="java.lang.Integer" column="id">
          <generator class="native">
             <param name="property">passport</param>
          </generator>
        </id>
        <property name="name" type="java.lang.String" column="name"></property>
        <property name="gender" type="java.lang.String" column="gender"></property>
        <property name="age" type="java.lang.Integer" column="age"></property>
        <one-to-one name="passport"
                  class="eg.one2one.bean.TPassport"
                  cascade="all"
                  outer-join="true"></one-to-one>
      </class>
    </hibernate-mapping>


    哇,已經(jīng)貼了這么多了,還沒完呢。配置文件內(nèi)容如下:
    <session-factory>
     <property name="connection.username">yourusername</property>
     <property name="connection.url">
      jdbc:microsoft:sqlserver://127.0.0.1:1433;dataBaseName=Test
     </property>
     <property name="dialect">
      org.hibernate.dialect.SQLServerDialect
     </property>
     <property name="myeclipse.connection.profile">One2OneTest</property>
     <property name="connection.password">yourpassword</property>
     <property name="connection.driver_class">
      com.microsoft.jdbc.sqlserver.SQLServerDriver
     </property>
     <property name="show_sql">true</property>
     <mapping resource="eg/one2one/bean/TUser.hbm.xml" />
     <mapping resource="eg/one2one/bean/TPassport.hbm.xml" />

    </session-factory>

    Ok,好了。寫了這么多代碼,能不能執(zhí)行,測試一下吧。
    package eg.one2one.util;

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

    public class HibernateUtil {
     private static SessionFactory sessionFactory;

     private HibernateUtil() {
     }

     public static SessionFactory getSessionFactory() {
      if (sessionFactory == null) {
       Configuration config = new Configuration();
       config.configure();
       sessionFactory = config.buildSessionFactory();
      }
      return sessionFactory;
     }
    }


    測試類:
    package eg.test;

    import java.util.Iterator;
    import java.util.List;

    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;

    import eg.one2one.bean.TPassport;
    import eg.one2one.bean.TUser;
    import eg.one2one.util.HibernateUtil;

    public class One2OneTest {
     public static void main(String[] args) {
      SessionFactory sessionFactory =
       HibernateUtil.getSessionFactory();
            Session session = sessionFactory.openSession();
           
           
    /*        TUser user = (TUser) session.load(TUser.class, new Integer(1));
           
            Transaction trans = null;
            try{
             trans = session.beginTransaction();
             session.delete(user);
             trans.commit();
            }catch(HibernateException e){
             e.printStackTrace();
             if(trans != null)
              trans.rollback();
            }*/

    /*        TUser user = (TUser) session.load(TUser.class, new Integer(2));
           
            user.setName("beauty");
            user.setAge(new Integer(20));
            user.setGender("femal");
           
            user.getPassport().setExpiry(new Integer(100));
            user.getPassport().setSerial("Australian");
           
            Transaction trans = null;
            try{
             trans = session.beginTransaction();
             session.save(user);
             trans.commit();
            }catch(HibernateException e){
             e.printStackTrace();
             if(trans != null)
              trans.rollback();
            }*/
           
           
    /*        Query query = session.createQuery("from TUser");       
            List list = query.list();
            Iterator it = list.iterator();
            while(it.hasNext()){
             TUser user = (TUser)it.next();
             System.out.print(user.getId() + "\t");
             System.out.print(user.getName() + "\t");
             System.out.print(user.getGender() + "\t");
             System.out.print(user.getAge() + "\t");
             System.out.print(user.getPassport().getSerial() + "\t");
             System.out.println(user.getPassport().getExpiry());
            }*/
           
           
    /*        Query query = session.createQuery("from TPassport");
            List list = query.list();
            Iterator it = list.iterator();
            while(it.hasNext()){
             TPassport passport = (TPassport)it.next();
             System.out.print(passport.getId() + "\t");
             System.out.print(passport.getSerial() + "\t");
             System.out.print(passport.getExpiry() + "\t");
             System.out.print(passport.getUser().getName() + "\t");
             System.out.print(passport.getUser().getGender() + "\t");
             System.out.println(passport.getUser().getAge() + "\t");
               
            }*/
           
    /*        TUser user = new TUser();
            user.setName("wangwu");
            user.setAge(new Integer(40));
            user.setGender("male");
           
            TPassport passport = new TPassport();
            passport.setSerial("American");
            passport.setExpiry(new Integer(10));
           
            user.setPassport(passport);
            passport.setUser(user);
           
            Transaction tran = null;
            try{
             tran = session.beginTransaction();         
             session.save(user);         
             tran.commit();
            }catch(HibernateException e){
                e.printStackTrace();
                if(tran != null)
                 tran.rollback();
            }*/
     }
    }

    完成了。


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    posts - 8, comments - 28, trackbacks - 0, articles - 0

    Copyright © 李鵬

    主站蜘蛛池模板: 一级毛片a免费播放王色| 亚洲日韩一区二区三区| 久久嫩草影院免费看夜色| 免费在线观看亚洲| 337p日本欧洲亚洲大胆人人| 午夜神器成在线人成在线人免费 | 成人电影在线免费观看| 久久久久亚洲AV综合波多野结衣| 青青草国产免费国产是公开 | 免费在线观看亚洲| 曰批全过程免费视频免费看| 亚洲区小说区图片区| 精品视频在线免费观看| 亚洲男女一区二区三区| 毛片免费vip会员在线看| 亚洲乱码av中文一区二区| 全亚洲最新黄色特级网站 | 最近最好最新2019中文字幕免费| 亚洲精品中文字幕无码AV| 9久9久女女免费精品视频在线观看| 亚洲自偷自偷在线成人网站传媒| 国产精品免费视频一区| 国产在线播放线91免费| 亚洲电影在线免费观看| 日本免费人成视频播放| 国产在线观看免费av站| 亚洲美女视频一区二区三区| 天天摸夜夜摸成人免费视频| ww在线观视频免费观看w| 久久亚洲精品无码AV红樱桃| 毛片免费观看视频| 国产精品无码永久免费888| 老汉色老汉首页a亚洲| 国产一区二区三区在线免费观看| 久久久精品视频免费观看| 亚洲乱码一二三四区麻豆| 内射无码专区久久亚洲| 嘿嘿嘿视频免费网站在线观看| 国产精品亚洲专区无码唯爱网| 亚洲av无码一区二区三区不卡| 女性无套免费网站在线看|