浏览 2623 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-05
对于数据库是采用了HIBERNATE的方案. 我现在想问一下最基本的一个设计原则,各位在HIBERNATE的实体JAVA类中是怎么设计的? 我第一个项目基本都是同事干的,应该是手写修改的,那个系统的JAVA实体类设计全部都是对应字段来进行的. 例如 表A,字段AID,ROOT..表B,字段ID,P,AID.. 其中AID分别是表A,B的主键和外键.那么类B中定义AID则直接为Long AID这种形式 我第二个项目是我自己用工具middlegen生成的,如果同样是这样的情况,则B中的AID定义为Class A a;就是用对象来存储该字段.并且通过工具生成的HIBERNATE配置文件也是匹配这种形式的. 通过开发比较,第一种形式开发相对比较简单,第二种则麻烦一些.但是我觉得可能如果采用方案二可能会更通用一些,因为引用B的时候如果顺带能带上A还是能降低工作量的,尤其象搜索的时候有时候就是查B但是实际也需要A的信息.这时候,相对来说第一种方法就不是太灵活了.毕竟,代码自动生成工具的设计也应该考虑到了这点.相对缺点可能是系统开销会大,设计基础DAO操作之类会更复杂之类.关于同事加的DAO那层的基本操作我虽然不懂HIBERNATE函数的定义,不过走测试跟踪的时候可以查的到,操作B对象的时候,B里面所带的A并不是一个完整的对象,而是一个可能引用的A对象,只能带有一个AID的属性,但是实际上里面的A是一个NULL.所以觉得DAO的设计还是要更复杂一些,而不是单纯的把数据压进去. 请问,各位在公司项目开发的时候采用哪种实体类的设计方式?还有,谁有实例化B更好的方法,得到一个真正的B对象,而不是里面有一个伪A存在?? 虽然问题简单,但希望高手解答下疑问啊..不单单是在编程上,重要的是方案的选择对项目的灵活性开销等方面的影响上. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-06
前面的,简单的单表映射,其并没有用到太多hibernate.
后面的所涉及的是hibernate处理关系数据库关连关系的java side典型方法,middlegen的原理来源于hibernate,所以generate出来的就为那样,不过建议不要太过依赖机械式生成,并不是有association就一定会好. |
|
返回顶楼 | |