hibernate 自然鍵 和 復合自然鍵

2021-08-26 08:04:34 字數 2069 閱讀 8564

必須提醒你:當應用程式繼承現有的遺留資料庫schema時,通常應該盡可能地對現有的schema少做一些改變。你

對schema所做的每一處改變都可能破壞訪問資料庫的其他現有應用程式。現有資料的遷移可能很昂貴,這也是你要考慮

的問題。一般來說,構建乙個新的應用程式不可能不對現有的資料模型做任何改變--新應用程式通常意味著

額外的業務需求,自然需要資料庫schema的演變。

處理主鍵:

不幸的是,遺留的資料庫很多使用了自然主鍵、復合鍵,這樣在業務需求改變時,很難重構資料庫。

1、對映自然鍵

如你遇到的user表,可能username是乙個自燃鍵。那麼你就需要告訴hibernate,標示符是在物件儲存之前由應用

分配的乙個自燃鍵:

view plain

copy to clipboard

print?

<

class

name=

"user"

table=

"user"

>

"username"

column=

"user_name"

>

class

="assigned"

>

"password"

>

class

>

jpa實現:view plain

copy to clipboard

print?

@entity

public

class

user

implements

serializable

public

userid(string usercode, string username)

public

string getusercode()

public

void

setusercode(string usercode)

public

string getusername()

public

void

setusername(string username)

@override

public

inthashcode()

@override

public

boolean

equals(object obj) else

if(!usercode.equals(other.usercode))

return

false;

if(username ==

null

) else

if(!username.equals(other.username))

return

false;

return

true;

}@override

public

string tostring() }

user:

view plain

copy to clipboard

print?

public

class

user

implements

serializable )

private

userid userid;

private

string password;

@onetomany

"user")

private

setitems =

newhashset();

view plain

copy to clipboard

print?

@entity

public

class

item

implements

serializable )

private

user user;

hibernate建立復合索引

1,hibernate執行復合索引兩種方式 在一對多的關係中,在多的一方產生做為連線的外來鍵 只是當做外來鍵用,資料表裡邊是沒有外來鍵的 當從一的一端向多的一端查詢時,可能在多的一端造成全表查詢問題,影響效能,所以在多的一端新增索引如下 xml user id seq 建立復合索引則如下,一般不會與...

Hyperledger Fabric 復合鍵使用

hyperledger fabric 的復合鍵是基於多個列組合成乙個復合鍵,並基於復合鍵存資料,基於復合鍵或部分列快速取資料。復合鍵將會使用復合鍵的型別名及多個列資料 u0000 生成實際使用的key。示例 createcompositekey id version min sub string 型...

POWER BI實現復合鍵關聯

power bi 實現復合鍵關聯 在power bi中可以實現表之間的關聯操作,例如 表1 表2 表1和表2,可以用學生做關聯 關聯後的效果如下 再增加乙個表 表3 需要把教師也做關聯,這時由於,班級和課程不在乙個表中,power bi中不能直接建立關聯 這時需要先將表一和表二建立聯絡後,再用復合鍵...