← 回到文章列表

Hello Hibernate Day04~Day05

1.如何使用MyEclipse生成Entity类和hbm.xml映射文件 1)先进入DB Browser创建一个dangdang数据库连接 2)工程右键,选MyEclipse–>Add Hibernate Capabilitity 添加Hibernate框架jar包,hibern…

1.如何使用MyEclipse生成Entity类和hbm.xml映射文件
1)先进入DB Browser创建一个dangdang数据库连接
2)工程右键,选MyEclipse–>Add Hibernate Capabilitity
添加Hibernate框架jar包,hibernate.cfg.xml,HibernateSessionFactory
3)创建一个com.tarena.entity包,用于存放实体类和映射文件
4)进入DB Browser选中数据表,右键选择Hibernate Reverse Engineeing
创建hbm.xml和pojo(实体类),选择type映射类型,设置映射实体类名和主键生成方式等.

 2.多對多關係
           <!-- category到product多對多 -->
        <set order-by="id" name="pros"
        		table="d_category_product">
        	<!-- 指定關係表的外鍵與當前表的主鍵關聯 -->
        	<key column="cat_id"></key>
        	<!-- column指定關係表外鍵與class表的主鍵關聯 -->
        	<many-to-many class="com.tarena.entity.Product"
        		 column="product_id">
        	</many-to-many>
        </set>
3.繼承映射
   1)修改實體類,將Book繼承Product
   2)在Product.hbm.xml中添加<joined-subclass>定義
   <class name="父類類型" table="父類表">
       ......//id主鍵映射,父類其他屬性的映射
       <joined-subclass name="子類類型" table="子類表">
           <key column="id"></key>
           ......//子類其他屬性的映射<property/>
       </joined-subclass>

   </class>
   ----繼承關係的操作------
    a.添加Book對象
       向d_book表和d_product表寫入記錄
    b.刪除Book對象
       從d_book表和d_product表刪除記錄
    c.查詢Book對象 session.load(Book.class,1)
       將d_book和d_product表連接查詢,獲取Book信息
    d.查詢Product對象 session.load(Product.class,1)
       將d_book和d_product表連接查詢子類對象
    e.只查詢d_product表
  "select pro.id,pro.productName,pro.productPic from Product pro"
  注意上面語句執行後,返回時是使用Object[]格式封裝一條記錄
  "select new Product(pro.id,pro.productName,pro.productPic)
   from Product pro"
  注意上面語句執行後,返回時是使用Product對象封裝一條記錄,Product需要提供相應的構造方法.
   f.執行"from Book"
      查詢所有的book圖書信息,從d_product和d_book聯合查詢
   g.執行"from Product"
      查詢所有子類對象信息.將d_product與d_book,d_computer聯合取出book和computer對象
1.繼承映射(2) <subclass>(參考示例Question.hbm.xml)
<class name="父類" table="表">
  <discriminator column="t_type"></discriminator>
  <subclass name="子類1" discriminator-value="區分標識值1">
     //子類1屬性映射
  </subclass>
  <subclass name="子類2" discriminator-value="區分標識值2">
    //子類1屬性映射
  </subclass>
</class>
注意:繼承映射的使用判斷
  a.如果將子類和父類映射到一張表,使用<subclass>方式
  b.如果將子類和父類分別映射到不同數據表,使用<joined-subclass>
2.組件映射(參考示例Order.hbm.xml,Person.hbm.xml)
  主要基於面向對象組件重複利用思想,簡化實體類定義.在業務操作時,對組件屬性執行操作.
   <component name="組件屬性" class="組件類型">
     <property name="組件子屬性" ..../>
     ........
   </component>
3.聯合主鍵映射(參考示例Emp.hbm.xml)
<composite-id name="key" class="EmpKey">
   <key-property name="firstName" type="string">
   	<column name="first_name"></column>
   </key-property>
   <key-property name="lastName" type="string">
           <column name="last_name"></column>
   </key-property>
</composite-id>
 提示:利用MyEclipse生成hbm.xml時,數據庫表設計時要加主鍵定義.如果不加默認將所有字段聯合充當主鍵.
4.List集合映射
  List:有序,可重複
  Set:無序,不可重複
        <list name="listCats">
        	<key column="parent_id"></key>

        	<list-index column="turn" base="1"></list-index>
        	<one-to-many class="com.tarena.entity.Category"/>
        </list>

Code Package [媒体不可用]

在这里找找

输入关键词,找一篇过去的记录。