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

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

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

    waysun一路陽(yáng)光

    不輕易服輸,不輕言放棄.--心是夢(mèng)的舞臺(tái),心有多大,舞臺(tái)有多大。踏踏實(shí)實(shí)做事,認(rèn)認(rèn)真真做人。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 64 評(píng)論 :: 0 Trackbacks

    在具體的項(xiàng)目應(yīng)用中,我們很少會(huì)用到一對(duì)一的級(jí)聯(lián)操作,且很多時(shí)候一對(duì)一的操作可以通過(guò)多對(duì)一實(shí)現(xiàn),但是一對(duì)一有自己的好處,就是在任何時(shí)候都能保證主外鍵數(shù)據(jù)的一致性,但是多對(duì)一的情況下未必能做到.
    我在項(xiàng)目中具體用到了一對(duì)一的級(jí)聯(lián)操作,從網(wǎng)上拿了 一個(gè)例子來(lái)做,但是沒(méi)有成功,于是只好自己研究,現(xiàn)在把修改后的代碼帖出來(lái).
    本例子使用hibernate3.jar+oracle數(shù)據(jù)庫(kù)
    庫(kù)表:
    CARD_TEST(CARDID[NUMBER(18)],CARDNUM[VARCHAR2(20)])
    USER_TEST(USERID[NUMBER(18)],USERNAME[VARCHAR2(20)])
    TestMain.java

    package com.gpdi.test;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    public class TestMain {
    /**
     * 存儲(chǔ)一個(gè)用戶(hù)
     * @param user
     */
    public void save(User user){
     user.setUsername("TEST");
     Card card=new Card();
     //Card card1=new Card();
     card.setCardnum("HGJUYT");
     //card1.setCardnum("fghy55");
     user.setCard(card);
     //user.setCard(card1);
     Session session=HibernateSessionFactory.currentSession();
        card.setUser(user);
        //card1.setUser(user);
     Transaction tr=session.beginTransaction();
     session.save(user);
     //session.save(card);
     tr.commit();
     session.close(); 
    }

     public static void main(String[] args) throws Exception {
      TestMain test=new TestMain();
         test.save(new User());
     }

    }
    Card.java

    package com.gpdi.test;

    /**
     * Card generated by MyEclipse - Hibernate Tools
     */

    public class Card  implements java.io.Serializable {
        // Fields   

         private Integer cardid;
         private String cardnum;
         private User user;

        // Constructors

        public User getUser() {
      return user;
     }
     public void setUser(User user) {
      this.user = user;
     }
     /** default constructor */
        public Card() {
        }
        /** full constructor */
        public Card(String cardnum) {
            this.cardnum = cardnum;
        }
        // Property accessors

        public Integer getCardid() {
            return this.cardid;
        }
       
        public void setCardid(Integer cardid) {
            this.cardid = cardid;
        }

        public String getCardnum() {
            return this.cardnum;
        }
       
        public void setCardnum(String cardnum) {
            this.cardnum = cardnum;
        }

    }

    User.java
    package com.gpdi.test;

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

    /**
     * User generated by MyEclipse - Hibernate Tools
     */

    public class User  implements java.io.Serializable {
        // Fields   

         private Integer userid;
         private String username;
         private Card card;
         //private Set card = new HashSet();

        // Constructors

        public Card getCard() {
      return card;
     }

     public void setCard(Card card) {
      this.card = card;
     }

     /** default constructor */
        public User() {
        }

        /** full constructor */
        public User(String username) {
            this.username = username;
        }

        // Property accessors

        public Integer getUserid() {
            return this.userid;
        }
       
        public void setUserid(Integer userid) {
            this.userid = userid;
        }

        public String getUsername() {
            return this.username;
        }
       
        public void setUsername(String username) {
            this.username = username;
        }
    }
    HibernateSessionFactory.java

    package com.gpdi.test;

    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.cfg.Configuration;

    /**
     * Configures and provides access to Hibernate sessions, tied to the
     * current thread of execution.  Follows the Thread Local Session
     * pattern, see {@link http://hibernate.org/42.html}.
     */
    public class HibernateSessionFactory {

        /**
         * Location of hibernate.cfg.xml file.
         * NOTICE: Location should be on the classpath as Hibernate uses
         * #resourceAsStream style lookup for its configuration file. That
         * is place the config file in a Java package - the default location
         * is the default Java package.<br><br>
         * Examples: <br>
         * <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml".
         * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code>
         */
        private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

        /** Holds a single instance of Session */
     private static final ThreadLocal threadLocal = new ThreadLocal();

        /** The single instance of hibernate configuration */
        private static final Configuration cfg = new Configuration();

        /** The single instance of hibernate SessionFactory */
        private static org.hibernate.SessionFactory sessionFactory;

        /**
         * Returns the ThreadLocal Session instance.  Lazy initialize
         * the <code>SessionFactory</code> if needed.
         *
         *  @return Session
         *  @throws HibernateException
         */
        public static Session currentSession() throws HibernateException {
            Session session = (Session) threadLocal.get();

      if (session == null || !session.isOpen()) {
       if (sessionFactory == null) {
        try {
         cfg.configure(CONFIG_FILE_LOCATION);
         sessionFactory = cfg.buildSessionFactory();
        } catch (Exception e) {
         System.err
           .println("%%%% Error Creating SessionFactory %%%%");
         e.printStackTrace();
        }
       }
       session = (sessionFactory != null) ? sessionFactory.openSession()
         : null;
       threadLocal.set(session);
      }

            return session;
        }

        /**
         *  Close the single hibernate session instance.
         *
         *  @throws HibernateException
         */
        public static void closeSession() throws HibernateException {
            Session session = (Session) threadLocal.get();
            threadLocal.set(null);

            if (session != null) {
                session.close();
            }
        }

        /**
         * Default constructor.
         */
        private HibernateSessionFactory() {
        }

    }
    Card.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!--
        Mapping file autogenerated by MyEclipse - Hibernate Tools
    -->
    <hibernate-mapping>
        <class name="com.gpdi.test.Card" table="CARD_TEST">
     
            <id name="cardid" type="integer">
                <column name="CARDID" />
                <generator class="foreign" >
                <param name="property">user</param>
                </generator>
            </id>
            <property name="cardnum" type="string">
                <column name="CARDNUM" length="45" not-null="true" />
            </property>
            <!--
            foreign-key="userid"指定外鍵關(guān)聯(lián)的字段,必須,不可缺少 ,cascade="save-update"指定怎么操作級(jí)聯(lián),非必須
            -->
           <one-to-one name="user" foreign-key="userid" class="com.gpdi.test.User" cascade="save-update"></one-to-one>
        </class>
    </hibernate-mapping>

    User.hbm.xml
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!--
        Mapping file autogenerated by MyEclipse - Hibernate Tools
    -->
    <hibernate-mapping>
        <class name="com.gpdi.test.User" table="USER_TEST">
            <id name="userid" type="integer">
                <column name="USERID" />
                <generator class="increment"/>
            </id>
            <property name="username" type="string">
                <column name="username" length="45" not-null="true" />
            </property>
            <one-to-one name="card" foreign-key="cardid" class="com.gpdi.test.Card" cascade="save-update"></one-to-one>
            <!--
           <set name="card" inverse="true" cascade="all">
            <key column="cardid" />
            <one-to-many class="com.gpdi.test.Card" />
            </set>
             <many-to-one  name="card" class="com.gpdi.test.Card"  insert="true" unique="true" lazy="false">
             <column name="cardid"  length="18"  />
            </many-to-one>
            -->
     
        </class>
    </hibernate-mapping>
    Hibernate實(shí)現(xiàn)一對(duì)一實(shí)例源碼
    posted on 2008-06-18 17:41 weesun一米陽(yáng)光 閱讀(4594) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): 經(jīng)典實(shí)例 、Hibernate

    評(píng)論

    # re: Hibernate實(shí)現(xiàn)one-to-one級(jí)聯(lián)保存[自己總結(jié)] [未登錄](méi) 2008-10-15 14:17 x
    騙人  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 中文字幕乱理片免费完整的| 77777_亚洲午夜久久多人| 在线免费观看一级片| 国产在线观看麻豆91精品免费| 精品视频一区二区三区免费| www成人免费视频| 亚洲阿v天堂在线2017免费| 九九久久精品国产免费看小说| 亚洲AV噜噜一区二区三区| 亚洲爆乳无码专区www| 亚洲AV无码成人精品区日韩| 久久亚洲中文字幕无码| 色老头综合免费视频| 一区视频免费观看| 9久久免费国产精品特黄| a级特黄毛片免费观看| 亚在线观看免费视频入口| 最近中文字幕电影大全免费版 | 亚洲韩国—中文字幕| 亚洲a一级免费视频| 亚洲欧洲高清有无| 亚洲毛片基地4455ww| 国产精品亚洲一区二区无码| 高潮内射免费看片| 一级特黄录像免费播放肥| 国产精品偷伦视频观看免费| 日本最新免费网站| 成在人线AV无码免费| 国产一级淫片视频免费看| 亚洲综合色成在线播放| 日韩亚洲一区二区三区| 亚洲精品偷拍无码不卡av| 亚洲综合国产成人丁香五月激情| 亚洲av日韩精品久久久久久a| 产传媒61国产免费| 国产精成人品日日拍夜夜免费| 黄页网站免费观看| 亚洲第一网站男人都懂| 亚洲AV无码一区二区乱子伦| 亚洲乱码一区av春药高潮| 污网站在线免费观看|