泥巴麒麟的BLOG

shenAwesome@hotmail.com 纵不能,将醉做生涯,休拘束

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  195 Posts :: 2 Stories :: 80 Comments :: 0 Trackbacks
hibernate是一个伟大的工具,嗯。真是用到上瘾

数据库和类的关联设计和命名规范
常见命名:

id   物理索引,无任何逻辑意义,所有关联全部通过id

name  名称
desc  描述
cust  客户
user  用户
acct  帐户
addr  地址
posi  位置
code  编码
tele  电话
type  类型

chname 中文名称  这里并非唯一标识,需要的时候使用(name和desc不能满足的时候)
remark 备注

我们看到,实体类的设计中,我们牵涉如下类型的field:
1. id
2. 简单field ,本表就记录完整的资料
3. 对象   manytoone关联,典型的就是类型关联。
4. 对象   compement,应该抽象出类,但并非manytoone,典型的如地址(路,街,号)
5. 集合对象 manytomany,典型的如学生和老师的关系。

特别的我们看到type类型的设计,这是典型的多对一
所以在设计应该如下:
class Customer{
        CustType type
        ...
}
CustType extends Type{
        ...
}
class Type{
        String code;
        String name;
        String desc;
}
在hibernate的hbm中,我们使用manytoone。
而在整体设计中可以考虑把所有的Type做成继承结构,而用一张表来存放所有的type
例:
 code/name/desc/type
 101 ,new,新装,CustType
 102,del,拆 ,CustType
 101,new,新装 ,UserType

相对的,如果并非典型的manytoone,如地址
可以使用compement的设计

另外我们可以作一个类似数据字典的类字典设计,使用一个持久类来存放。
作用是1.待查,2.可以用于界面
class ClassDict

field      /name     /desc
Cust.Type,客户类型,表示客户的类型(如大客户,代理商等)
posted on 2005-06-08 12:58 泥巴麒麟 阅读(547) 评论(5)  编辑  收藏

Feedback

# re: 论hibernate解放程序员 2005-10-21 09:37 zyh
呵呵,blog写的不错啊,
请问hibernate对于多表关联能影射吗?   回复  更多评论
  

# re: 论hibernate解放程序员 2005-10-21 18:22 泥巴麒麟
多表关联指什么?我遇到的一般的关联都是可以的,包括类层叠几级的。不过说实在的,hibernate可能主要还是用于关联比较简单的比较有把握,慢也慢不到哪里去。如果关联复杂数据量大,还是要想当功底才有自信阿。  回复  更多评论
  

# re: 论hibernate解放程序员 2005-10-24 10:01 zyh
呵呵, 我是刚刚学习hibernate,很多问题需要请教。
你一般是从类生成影射文件,再生成数据库表这个过程吧?
我看有介绍是这个的逆向过程,不知道这两种有何本质区别呢。谁熟谁劣?
谢谢解答我的问题,  回复  更多评论
  

# re: 论hibernate解放程序员 2005-10-24 15:08 kaka
理论上说,应该从类生成表。但实际代码中,多数公司还是以表结构为核心。特别是如果别人已经建表的情况下,你从表生成,就比较省事。
严格的说,数据表只是持久化对象的实现,所以第一种办法,更加的面向对象。
  回复  更多评论
  

# re: 论hibernate解放程序员 2006-01-20 17:52 aspirin
这两种的本质区别在于你是否真正的在用面向对象的方式在思考。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问