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

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

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

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

    數(shù)據(jù)庫(kù)使用的MSSQLServer2000,我已經(jīng)導(dǎo)出SQL語(yǔ)句如下:
    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ù)庫(kù)。呵呵

    然后就是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()
    **/

    }

    接下來(lái)就應(yīng)該書(shū)寫(xiě)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)貼了這么多了,還沒(méi)完呢。配置文件內(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,好了。寫(xiě)了這么多代碼,能不能執(zhí)行,測(cè)試一下吧。
    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;
     }
    }


    測(cè)試類:
    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();
            }*/
     }
    }

    完成了。


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


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

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

    Copyright © 李鵬

    主站蜘蛛池模板: 中文文字幕文字幕亚洲色| 亚洲AV无码专区国产乱码电影 | 亚洲成a人无码亚洲成www牛牛| 5g影院5g天天爽永久免费影院| 亚洲免费视频网站| 毛片免费全部播放无码| 久久综合亚洲色一区二区三区 | 免费AA片少妇人AA片直播| 久久久久亚洲AV成人片| 永久免费在线观看视频| 在线综合亚洲欧洲综合网站| 日产乱码一卡二卡三免费| 特级毛片爽www免费版| 国产亚洲成AV人片在线观黄桃| 最新久久免费视频| 亚洲网站视频在线观看| 成人男女网18免费视频| 男女超爽视频免费播放| 国产成人综合亚洲亚洲国产第一页| 日本免费A级毛一片| 亚洲国产精品久久人人爱| 日韩精品免费一区二区三区| 日韩a毛片免费观看| 亚洲精品人成在线观看| 日韩欧美一区二区三区免费观看| 亚洲AV无码一区二区一二区| 久久影院亚洲一区| 日本片免费观看一区二区| 亚洲av日韩av永久在线观看| 亚洲中文字幕无码一久久区| 最近2019免费中文字幕视频三 | 成人无码a级毛片免费| 亚洲小说区图片区| 免费人成年轻人电影| 久久午夜无码免费| 亚洲国产精品无码观看久久| 亚洲人色婷婷成人网站在线观看| 99久久99久久免费精品小说| 人人狠狠综合久久亚洲| 久久99国产亚洲精品观看| 美女视频黄的全免费视频 |