開拓自己

          NeverDrop

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            0 隨筆 :: 14 文章 :: 0 評論 :: 0 Trackbacks

          這里所說的1對1 其實就是表和表的之間的關系! 其實1對1是1對多的特例,1對多是多對多的特例。
          在hibernate里實現1對1 其實就把把表用對象來表示!讓2個表產生一對一的關系!例如 一個人有一個身份
          證。是先有人,后才有的身份證的!所以 可以看做人的身份號ID是自己的主鍵,省份證的ID是自己的主鍵。而證表的ID引用人表的ID來當自己的外鍵! 當我們想添加一個人的 時候!可以自動添加一個 身份出來!

          現在具體來說明下!
          步驟:
          1 新建設一個j2ee的web project
          2?添加hibernate包,user libraries不選 白色框里2個都選 單選框選下面一個。
          ?? 2.1需要配置個數據連接 操作:new的下一步,復選框的溝去掉-》下一部門-》
          ?? 2.2建立一個存放sessionFoctory工廠的包如 org.hibernate--》完成

          3 這時候hibernate.cfg.xml產生 還產生了一個HibernateSessionFactory的session的工廠類

          4 需要給hibernate.cfg.xml里寫數據庫的連接:下面以sql數據庫的連接來講解:
          4.1 在hibernate.cfg.xml的設計器里點:new
          4.2 .Profile name:隨便寫 只要不重復
          4.3如果沒有你需要的Driver 就自己新建一個 點超級連接configure那個
          4.4在下拉框里選你要連的數據庫。如過你選sql server
          4.5在url里? 填jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs
          4.6倒入sqlserver連java的3個jar包 點add jars選擇你要的jars包 點確定
          4.7填 name和pwd下一部——>完成
          至此數據庫?hibernate.cfg.xml已經配置完畢。

          5下面需要把數據表? 轉成 類
          講解
          1切換到數據庫的模式下,選到你要轉成類的表!
          2右鍵,倒數第2個選
          3選擇一個包。一般我們起的名字叫bean
          4第一個復選框 是說是否產生這個類的hbm.xml文件
          5第2個復選框就是問 需要產生一個抽象的 類不
          6 我們選擇一個包,把前2個復選的點上 就ok了下一部
          7給我們的主鍵 選擇適合的增長方式!一般選native如果是外鍵就是foreign--->完成

          6--另外一個類 雷同 我就不講了只是?增長方式 用foreign表示 表示根據別的表來設置自己
          ? 下面講怎么把2個表的一對一關系 搞出來!
          ???增長一個人的時候 就會增長一個證 !?所以證 應該成為 人 類的一個屬性,同時我們給他get,set?方法
          ??而且證里 id是通過人里id在設置的,所以 證里 也應該 包含人 這個類的對象作為屬性!用老師的話說
          就是你中有我,我中有你!testTable類 相當與人???car類相當與證???
          alt+shift+s可以倒到屬性的get 和set方法

          7配置他們各自的***.hbm.xml文件

          作為主表的 人類(textTable)中 應該加如下代碼:(代碼應寫在<class></class>里)
          <one-to-one name="car"? class="org.bean.Car" cascade="all"></one-to-one>
          解釋一下:one-to-one表示現在2個表的關系是一對一 name里的car就是 textTable 里一個屬性 的對象名
          這個對象就是 我要關聯那個表的類的對象名! cascade=''all" 表示現在這個表是主動表

          作為從表的 證類(Car)中加入如下代碼:
          <one-to-one name="testTable" class="org.bean.TestTable"></one-to-one>
          補充說明下:雖然這個類和 這個xml在一個文件夾里,但是并不表示一個包里,所以我們寫class的值的時候要寫全稱的路徑。
          重點:因為 這個表是從表,他的id要跟隨的主表的變化而變化 所以 因該在id里加 如:
          <param name="property">testTable</param>
          解釋:name="property"表示引用的是屬性?? testTable表示引用的值 這個值就是另一個類?,他現在作為一個屬性放在了當前類里。這樣:我們就把主表的主鍵和從表的主鍵關聯起來了!并且從表的主鍵引用主表的主鍵當自己的外鍵。

          8以上完成了 2個表的連接,關系操作!了?? 下面 我們就要進行一個插入操作 ,看我們插入一個人的時候,是否也能插入一個證!

          9新建設servlet其中? 注意他在web-xml中是如何配置的!到時候jsp里訪問就容易了!
          ???新建2個表的類的對象! 給其中不是相關的屬性 通過set方法 給值。
          如:Car car=new Car();
          ??TestTable testTable=new TestTable();
          testTable.setUsername("wudi");
          ??testTable.setCar(car);
          ??car.setTestTable(testTable);
          ??car.setCarMoney(new Integer(123));

          需要調用 主表的 dao類中的save方法 進行插入 同時把主表的對象 作為參數傳過去

          9建立一個存放Dao的包dao 和一個我們要在TestTable這個表上進行一系列操作的類? TestTableDao
          ???public void save(TestTable table)
          ?{

          ??Session session=HibernateSessionFactory.getSession();
          ??Transaction tx=session.beginTransaction();
          ??
          ??session.save(table);
          ??tx.commit();
          ?}
          說明 先產生hibernateSessionFactory工廠子類的對象!然后 用他產生事物的對象!
          在用他調用save ()方法?其實這就是hql語言?就是insert方法!最后提交事物
          ?

          posted on 2007-01-04 01:54 誠夏徠 閱讀(230) 評論(0)  編輯  收藏 所屬分類: j2ee
          主站蜘蛛池模板: 武鸣县| 嘉禾县| 公安县| 象州县| 喜德县| 新巴尔虎左旗| 阿巴嘎旗| 蒙城县| 上栗县| 河西区| 栾川县| 元朗区| 香格里拉县| 揭西县| 会昌县| 宁化县| 通河县| 临泉县| 新昌县| 嵊州市| 鄂尔多斯市| 方山县| 克什克腾旗| 泰和县| 合水县| 昆明市| 上饶县| 香港 | 皋兰县| 龙川县| 全椒县| 乌苏市| 漳平市| 房产| 界首市| 潢川县| 日土县| 韩城市| 汝州市| 平顶山市| 元阳县|