hibernate是一個(gè)偉大的工具,嗯。真是用到上癮
數(shù)據(jù)庫和類的關(guān)聯(lián)設(shè)計(jì)和命名規(guī)范
常見命名:
id 物理索引,無任何邏輯意義,所有關(guān)聯(lián)全部通過id
name 名稱
desc 描述
cust 客戶
user 用戶
acct 帳戶
addr 地址
posi 位置
code 編碼
tele 電話
type 類型
chname 中文名稱 這里并非唯一標(biāo)識,需要的時(shí)候使用(name和desc不能滿足的時(shí)候)
remark 備注
我們看到,實(shí)體類的設(shè)計(jì)中,我們牽涉如下類型的field:
1. id
2. 簡單field ,本表就記錄完整的資料
3. 對象 manytoone關(guān)聯(lián),典型的就是類型關(guān)聯(lián)。
4. 對象 compement,應(yīng)該抽象出類,但并非manytoone,典型的如地址(路,街,號)
5. 集合對象 manytomany,典型的如學(xué)生和老師的關(guān)系。
特別的我們看到type類型的設(shè)計(jì),這是典型的多對一
所以在設(shè)計(jì)應(yīng)該如下:
class Customer{
CustType type
...
}
CustType extends Type{
...
}
class Type{
String code;
String name;
String desc;
}
在hibernate的hbm中,我們使用manytoone。
而在整體設(shè)計(jì)中可以考慮把所有的Type做成繼承結(jié)構(gòu),而用一張表來存放所有的type
例:
code/name/desc/type
101 ,new,新裝,CustType
102,del,拆 ,CustType
101,new,新裝 ,UserType
相對的,如果并非典型的manytoone,如地址
可以使用compement的設(shè)計(jì)
另外我們可以作一個(gè)類似數(shù)據(jù)字典的類字典設(shè)計(jì),使用一個(gè)持久類來存放。
作用是1.待查,2.可以用于界面
class ClassDict
field /name /desc
Cust.Type,客戶類型,表示客戶的類型(如大客戶,代理商等)