1、@entity(name="entityname")
必須,name為可選,對應資料庫中一的個表
2、@table(name="",catalog="",schema="")
可選,通常和@entity配合使用,只能標註在實體的class定義處,表示實體對應的資料庫表的資訊
name:可選,表示表的名稱。預設地,表名和實體名稱一致,只有在不一致的情況下才需要指定表名
catalog:可選,表示catalog名稱,預設為catalog("")。
schema:可選,表示schema名稱,預設為schema("")。
3、@id
必須@id定義了對映到資料庫表的主鍵的屬性,乙個實體只能有乙個屬性被對映為主鍵。置於get***x()前。
4、@generatedvalue(strategy=generationtype,generator="")
可選strategy:表示主鍵生成策略,有auto,indentity,sequence 和 table 4種,分別表示讓orm框架自動選擇,根據資料庫的identity欄位生成,根據資料庫表的sequence欄位生成,以有根據乙個額外的表生成主鍵,預設為auto
generator:表示主鍵生成器的名稱,這個屬性通常和orm框架相關,例如,hibernate可以指定uuid等主鍵生成方式。
示例:@id
@generatedvalues(strategy=strategytype.sequence)
public int getpk() {
return pk;
5、@basic(fetch=fetchtype,optional=true)
可選@basic表示乙個簡單的屬性到資料庫表的字段的對映,對於沒有任何標註的get***x()方法,預設即為@basic
fetch: 表示該屬性的讀取策略,有eager和lazy兩種,分別表示主支抓取和延遲載入,預設為eager.
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
10、@onetomany(fetch=fetchtype,cascade=cascadetype)
可選@onetomany描述乙個一對多的關聯,該屬性應該為集體型別,在資料庫中並沒有實際字段。
fetch:表示抓取策略,預設為fetchtype.lazy,因為關聯的多個物件通常不必從資料庫預先讀取到記憶體
cascade:表示級聯操作策略,對於onetomany型別的關聯非常重要,通常該實體更新或刪除時,其關聯的實體也應當被更新或刪除
例如:實體user和order是onetomany的關係,則實體user被刪除時,其關聯的實體order也應該被全部刪除
示例:@onetymany(cascade=all)
public list getorders() {
return orders;
11、@onetoone(fetch=fetchtype,cascade=cascadetype)
可選@onetoone描述乙個一對一的關聯
fetch:表示抓取策略,預設為fetchtype.lazy
cascade:表示級聯操作策略
示例:@onetoone(fetch=fetchtype.lazy)
public blog getblog() {
return blog;
12、@manytomany
可選@manytomany 描述乙個多對多的關聯。多對多關聯上是兩個一對多關聯,但是在manytomany描述中,中間表是由orm框架自動處理
targetentity:表示多對多關聯的另乙個實體類的全名,例如:package.book.class
Oracle 資料庫的眾多 「NAME」
oracle 有眾多名字,很多人容易弄混,下面會通過各個層面的展示,從視覺 流程角度去了解,而並非單一通過概念去認識他們,這樣會更容易認識他們,了解他們之間的區別 資料庫名,長度不能超過8個字元,記錄在 datafile redolog 和 control file 中 這部分可以通過 bbed 來...
判斷資料庫表中一列是否為空的
當我們從資料庫中取出一行資料的時候,一開始它們還是乙個datarow,或者是乙個datareader我們要需地把它們乙個乙個轉換成c 語言中我們所需要的型別。如dr content tosstring 而資料庫表中的這個content欄位可能是null,那麼,我們在轉換之前,就要先進行判斷。怎麼進行...
資料庫中一些基礎概念
一些重要的概念 資料 資料是描述事物的符號。資料無處不在 資料庫 資料庫就是資料存放的地方。資料庫是資料和資料庫物件的集合。所謂資料庫物件是指表 檢視 儲存過程 觸發器等 資料庫管理系統dbms 資料庫管理系統是用於管理資料的計算機軟體。資料庫管理系統使使用者能方便的定義和運算元據,維護資料的安全性...