天天看點

hibernate之注解

使用hibernate注解的目的—-為了簡化繁瑣的ORM映射檔案(*.hbm)的配置

JPA與Hibernate的關系

  • JPA全稱 Java Persistence API; JPA注解是javaee的規範與标準。
  • JPA 是标準的接口,hibernate是實作,但是hibernate功能更強大,是JPA 的超集。
  • hibernate通過三個元件來實作與jpa的關系;分别為hibernate-annotation hibernate-entitymanager hibernate-core元件。
  • 一般開發中,優先考慮用JPA注解,有利于程式的移植與擴充。

    hibernate注解的分類:

  • 類級别注解(@Entity實體類 @Table @Embeddable嵌入類)
  • 屬性級别注解
  • 映射關系注解

hibernate.cfg.xml文檔的回顧:

hibernate之注解

打開資料庫的使用者名,密碼,驅動,資料庫的URL位址,使用的方言,是否在結果中顯示sql語句,是否格式化sql語句,是否建立,更新..表結構,與會話有關的配置。

類級别注解

@Entity 映射實體類, 對應資料庫中的表。@Entity(name=”tablename”)(name 可選,對應資料庫中的一個表,若表名與實體類名相同,則可以省略)

注意:使用@entity時,要指定實體類的主鍵屬性

寫完實體類後,要将它寫入hibernate.cfg.xml中 語句為

<mapping class="包名.類名">

測試 表結構 建立的例子

@Table(name=”“,catalog=”” ,schema=”“)

與@Entity配合使用,隻能标注在實體的class定義處,表示實體對應的資料庫表的資訊

name:可選,映射表的名稱,預設表名和實體名稱一緻,隻有在不一緻的情況下才要指定表名

catalog: 表示目錄, 可選,表示Catalog名稱,預設為空

schema: 表示模式,可選,表示Schema名稱,預設空。

schema與catalog:

hibernate之注解

描述本圖:一個資料庫可以包含多個目錄(catalog),一個目錄可以包含多個模式(schema),一個模式包含多個資料庫對像

詳情

不同資料庫對schema和catalog的支援度不同]

hibernate之注解

mysql不支援catalog不用顯示,schema預設為資料庫名稱

如圖顯示的結果,建立的表名前有hibernate表示模式

hibernate之注解

@Embeddable

表示非實體類,是以它不會映射成一張表,但可以嵌入到另一個實體類中作為屬性而存在。

執行個體

本人也寫有代碼,在diyhibernate.demo.Student

繼續閱讀