@Basic表示一個簡單的屬性 懶加載,急加載


5、@Basic(fetch=FetchType,optional=true)

  可選

  @Basic表示一個簡單的屬性到數據庫表的字段的映射,對於沒有任何標注的getXxxx()方法,默認 即為 @Basic

  fetch: 表示該屬性的讀取策略,有EAGER和LAZY兩種,分別表示主支抓取和延遲加載,默認為EAGER.

  (1)、FetchType.LAZY:懶加載,加載一個實體時,定義懶加載的屬性不會馬上從數據庫中加載。

  (2)、FetchType.EAGER:急加載,加載一個實體時,定義急加載的屬性會立即從數據庫中加載。

  (3)、比方User類有兩個屬性,name跟address,就像百度知道,登錄后用戶名是需要顯示出來的,此屬性用到的幾率極大,要馬上到數據庫查,用急加載;而用戶地址大多數情況下不需要顯示出來,只有在查看用戶資料是才需要顯示,需要用了才查數據庫,用懶加載就好了。所以,並不是一登錄就把用戶的所有資料都加載到對象中,於是有了這兩種加載模式。 optional:表示該屬性是否允許為null,默認為true

  示例:

  @Basic(optional=false)

  public String getAddress() { return address; }

  6、@Column

  可選

  @Column描述了數據庫表中該字段的詳細定義,這對於根據JPA注解生成數據庫表結構的工具非常 有作用.

  name:表示數據庫表中該字段的名稱,默認情形屬性名稱一致

  nullable:表示該字段是否允許為null,默認為true

  unique:表示該字段是否是唯一標識,默認為false

  length:表示該字段的大小,僅對String類型的字段有效

  insertable:表示在ORM框架執行插入操作時,該字段是否應出現INSETRT語句中,默認為true

  updateable:表示在ORM框架執行更新操作時,該字段是否應該出現在UPDATE語句中,默認為 true.對於一經創建就不可以更改的字段,該屬性非常有用,如對於birthday字段.

  columnDefinition:表示該字段在數據庫中的實際類型.通常ORM框架可以根據屬性類型自動判 斷數據庫中字段的類型,但是對於Date類型仍無法確定數據庫中字段類型究竟是DATE,TIME還是 TIMESTAMP.此外,String的默認映射類型為VARCHAR,如果要將String類型映射到特定數據庫的 BLOB或TEXT字段類型,該屬性非常有用.

  示例:

  @Column(name="BIRTH",nullable="false",columnDefinition="DATE")

  public String getBithday() { return birthday; }

  7、@Transient

  可選

  @Transient表示該屬性並非一個到數據庫表的字段的映射,ORM框架將忽略該屬性. 如果一個屬性並非數據庫表的字段映射,就務必將其標示為 @Transient ,否則,ORM框架默認其注 解為 @Basic

  示例: //根據birth計算出age屬性

  @Transient

  public int getAge() { return getYear(new Date()) - getYear(birth); }

  8、@ManyToOne(fetch=FetchType,cascade=CascadeType)

  可選

  @ManyToOne表示一個多對一的映射,該注解標注的屬性通常是數據庫表的外鍵

  optional:是否允許該字段為null,該屬性應該根據數據庫表的外鍵約束來確定,默認為true

  fetch:表示抓取策略,默認為FetchType.EAGER

  cascade:表示默認的級聯操作策略,可以指定為ALL,PERSIST,MERGE,REFRESH和REMOVE中的若 干組合,默認為無級聯操作

  targetEntity:表示該屬性關聯的實體類型.該屬性通常不必指定,ORM框架根據屬性類型自動判 斷targetEntity.

  示例:

  //訂單Order和用戶User是一個ManyToOne的關系

  //在Order類中定義

  @ManyToOne()

  @JoinColumn(name="USER")

  public User getUser() { return user; }

  9、@JoinColumn

  可選

  @JoinColumn和@Column類似,介量描述的不是一個簡單字段,而一一個關聯字段,例如.描述一個 @ManyToOne的字段.

  name:該字段的名稱.由於@JoinColumn描述的是一個關聯字段,如ManyToOne,則默認的名稱由 其關聯的實體決定. 例如,實體Order有一個user屬性來關聯實體User,則Order的user屬性為一個外鍵, 其默認的名稱為實體User的名稱+下划線+實體User的主鍵名稱 示例: 見@ManyToOne

--------------------- 本文來自 laingew 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/u014131893/article/details/22109665?utm_source=copy 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM