內(nèi)蒙古java團(tuán)隊

          j2se,j2ee開發(fā)組
          posts - 139, comments - 212, trackbacks - 0, articles - 65
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          日歷

          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          公告

          發(fā)展經(jīng)濟(jì)!

          發(fā)展GPS!

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 340124
          • 排名 - 163

          最新評論

          雙向一對一關(guān)聯(lián)

          Posted on 2007-01-08 16:55 帥子 閱讀(906) 評論(1)  編輯  收藏 所屬分類: j2se技術(shù)專區(qū)
          二.雙向一對一關(guān)聯(lián)
          需要對TGroup.java和TGroup.hbm.xml文件作修改

          1.在TGroup.java中增加一個TUser類和相應(yīng)的getter、setter方法
          TGroup.java
          package?cn.blogjava.start;

          import?java.io.Serializable;

          public?class?TGroup?implements?Serializable?{
          ????
          ????private?Integer?id;
          ????private?String?name;
          ????private?TUser?user;
          ????
          ????public?TUser?getUser()?{
          ????????return?user;
          ????}
          ????public?void?setUser(TUser?user)?{
          ????????this.user?=?user;
          ????}

          ????public?Integer?getId()?{
          ????????return?id;
          ????}
          ????public?void?setId(Integer?id)?{
          ????????this.id?=?id;
          ????}
          ????public?String?getName()?{
          ????????return?name;
          ????}
          ????public?void?setName(String?name)?{
          ????????this.name?=?name;
          ????}
          ????
          }

          2.在TGroup.hbm.xml中增加one-to-one配置
          <?xml?version="1.0"?>
          <!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
          >
          <hibernate-mapping>
          ????
          <class?name="cn.blogjava.start.TGroup"?table="T_Group"?catalog="sample">
          ????????
          <id?name="id"?type="integer">
          ????????????
          <column?name="id"?/>
          ????????????
          <generator?class="native"?/>
          ????????
          </id>
          ????????
          <property?name="name"?type="string"?column="name"?/>
          ????????
          <one-to-one?
          ?????????????????????
          name="user"

          ?????????????????????class
          ="cn.blogjava.start.TUser"
          ?????????????????????property-ref
          ="group"
          ?????????????????????
          />
          ????
          </class>
          </hibernate-mapping>
          </DIV>
          這樣就實(shí)現(xiàn)了雙向關(guān)聯(lián)??梢詫?shí)現(xiàn)雙向查詢
          package?cn.blogjava.start;

          import?java.util.List;

          import?junit.framework.Assert;
          import?junit.framework.TestCase;

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


          public?class?HibernateTest?extends?TestCase?{
          ????
          ????Session?session?
          =?null;

          ????
          protected?void?setUp()?{
          ????????
          try?{
          ????????????Configuration?config?
          =?new?Configuration().configure();
          ????????????SessionFactory?sessionFactory?
          =?config.buildSessionFactory();
          ????????????session?
          =?sessionFactory.openSession();
          ????????????
          ????????}?
          catch?(HibernateException?e)?{
          ????????????e.printStackTrace();
          ????????}????????
          ????}

          ????
          protected?void?tearDown()?{
          ????????
          try?{
          ????????????session.close();????????
          ????????}?
          catch?(HibernateException?e)?{
          ????????????e.printStackTrace();
          ????????}????????
          ????}????
          ????
          ????
          /**
          ?????*?對象持久化測試(Insert方法)
          ?????
          */????????
          ????
          public?void?testInsert()?{
          ????????Transaction?tran?
          =?null;
          ????????
          try?{
          ????????
          ????????????TUser?user?
          =?new?TUser();
          ????????????user.setName(
          "byf");
          ????????????user.setAge(
          new?Integer(26));
          ????????????
          ????????????TGroup?group?
          =?new?TGroup();
          ????????????group.setName(
          "Admin");
          ????????????
          ??????????????????????
          ????????????tran?
          =?session.beginTransaction();????????????????????
          ????????????
          //設(shè)置關(guān)聯(lián)
          ????????????user.setGroup(group);

          ????????????session.save(user);
          ????????????session.flush();
          ????????????tran.commit();
          ????????????Assert.assertEquals(user.getId().intValue()
          >0?,true);
          ????????}?
          catch?(HibernateException?e)?{
          ????????????e.printStackTrace();
          ????????????Assert.fail(e.getMessage());
          ????????????
          if(tran?!=?null)?{
          ????????????????
          try?{
          ????????????????????tran.rollback();
          ????????????????}?
          catch?(Exception?e1)?{
          ????????????????????e1.printStackTrace();
          ????????????????}
          ????????????}
          ????????}
          ????}
          ????
          ????
          /**
          ?????*?對象讀取測試(Select方法)
          ?????
          */????????????
          ????
          public?void
          ?testSelect(){
          ????????String?hql?
          =?"?from?TUser?where?name='byf'"
          ;
          ????????String?hql2?
          =?"?from?TGroup?where?name='admin'"
          ;
          ????????
          try
          ?{
          ????????????List?userList?
          =
          ?session.createQuery(hql).list();
          ????????????TUser?user?
          =?(TUser)userList.get(0
          );
          ????????????System.out.println(
          "user?name?is?"?+
          ?user.getName());
          ????????????System.out.println(
          "user?group?is?"?+
          ?user.getGroup().getName());
          ????????????Assert.assertEquals(user.getName(),?
          "byf"
          );
          ????????????
          ????????????List?groupList?
          =
          ?session.createQuery(hql2).list();
          ????????????TGroup?group?
          =?(TGroup)groupList.get(0
          );
          ????????????System.out.println(
          "group?name?is?"?+
          ?group.getName());
          ????????????System.out.println(
          "group?user?is?"?+
          ?group.getUser().getName());
          ????????????Assert.assertEquals(group.getUser().getName(),?
          "byf"
          );????????????
          ????????}?
          catch
          ?(Exception?e)?{
          ????????????e.printStackTrace();
          ????????????Assert.fail(e.getMessage());
          ????????}
          ????}

          }

          評論

          # re: 雙向一對一關(guān)聯(lián)  回復(fù)  更多評論   

          2007-12-14 14:45 by dfgsdfg
          這好像是單向一對一關(guān)聯(lián)吧 !
          主站蜘蛛池模板: 沁阳市| 集贤县| 泸州市| 泰和县| 万宁市| 荣成市| 通榆县| 六盘水市| 田阳县| 彭山县| 图木舒克市| 扎兰屯市| 宣威市| 东乡族自治县| 郸城县| 鄄城县| 南城县| 宜春市| 灵丘县| 贡山| 临桂县| 沛县| 孟连| 江西省| 鄂温| 太和县| 武功县| 黄山市| 藁城市| 资源县| 西宁市| 辉县市| 德令哈市| 桂东县| 西乡县| 呼和浩特市| 天门市| 垫江县| 当雄县| 马边| 安平县|