2012-06-26 31 views
1
<hibernate mapping package="org.hibernate.tutorial.domain"> 

    <class name="Event" table"Events"> 
     <id name="id" column="EVENT_ID"> 
      <generator class ="native"/> 
     </id> 

     <property name="date" type="timestamp" column="EVENT_DATE"/> 
     <property name="title"/> 

     </class> 

</hibernate-mapping> 

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/tutorial.html#tutorial-firstapp 我正在閱讀關於hibernate的這篇文章。幾個問題在休眠ORM。

  1. 這是最適合初學者的指南。
  2. generator class ="native"是什麼意思?它是做什麼用的?
  3. 爲什麼id用id標籤聲明,但另一個用 屬性標籤聲明。
  4. 人們仍然使用xml文件來映射類與表。這是一種老式的方式嗎?

回答

2
  1. 也許。
  2. 這意味着使用數據庫的「本機」id方法,如Oracle中的序列或MySql中的auto_increment等。
  3. 因爲其中一個是ID而其他是屬性。
  4. 是的。是的,但在某些情況下也是可取的,例如,希望/需要將源與Hibernate分離或將DB配置保留在一個位置(XML文件位於單個目錄中而不是源文件中的任何位置)。
2
  1. 這是一個非常主觀的答案。我會從JPA指南開始。
  2. 本機意味着它將使用特定於數據庫的生成方法。例如,對於mysql,它將使用自動增量。對於oracle,它可以使用序列。
  3. Hibernate要求每個實體都有一個id。使用id元素來標記它。
  4. 大多數人現在使用註釋來代替。有一個好處,你可以使用JPA註釋,而不是綁定到休眠。例如,在XML世界中仍然有一個地方可以映射你沒有源訪問權限的bean。
+0

嘿,這是我聽說過的Hibernate註釋的第一個真正的優勢。我更喜歡xml映射文件,因爲在不改變單行Java代碼的情況下,您可以爲不同的數據庫創建不同的映射關係,它們可以很好地概述映射,並且它們有助於以正確的方式進行數據庫設計(數據庫優先,Java pojos後來)。但主要是這是個人品味的問題。 – Johanna

+0

呵呵。我先是Pojos的大信徒,db後來:)雖然這比宗教信仰更具宗教性。 –

1

問題的答案:

1)這是對於初學者的最佳指南。 - 這是一個官方和首次有關休眠的文檔。我寧願喜歡「休眠在行動」

2)hibernate中有幾個generators,取決於需求我們需要選擇合適的,基本上它用於生成主鍵。例如,如果您使用generator="assigned"即,您需要在撥打session.save(entity)之前手動分配主鍵。這裏native意味着hibernate將根據您在配置中提供的數據庫方言來處理生成主鍵。它使用序列,如果你使用oracle和auto_increment,如果你使用mysql或postgres

3)id表示主鍵,其他是屬性,希望這是一個約定。

4)舊應用程序仍然使用xmls。最好先學習xml,然後將其轉換爲註釋。