Java中VO的设计

zhuyouyong 2014-04-25 12:14:47
如题,简化问题,打个比方,两个实体类:Student, Book,
Student:id,bookId属性,对应student表中id,bookId字段
Book:id, bookName, author属性,对应book表中的id,bookName,author等字段

现在设计一个StudentVO,两种方案
1包含studentId,bookVO
2包含studentId,bookName,author

第一种方案:每次获取一个StudentVO需要先到数据库中获取Student,转换成StudentVO,再获取一个Book,转换成BookVO,设置BookVO为StudentVO内置对象。

第二种方案:在表Student中增加字段bookName,这样直接可以通过一次查询就获取一个StudentVO,减少访问数据库的次数。

小结
第一种方案:在大数据情况下,比如获取1000个学生,就要多出1000次数据库访问,对性能有一定损耗。
第二种方案:如果StudentVO还需要包含author等多个BookVO中的信息时,这样就没有第一种方案显得简洁,过多的增加Book类中的属性和book表中的字段,也会显得实体设计不伦不类。


请教大家如何设计才是比较合理的方案?性能和设计规范能有所平衡
...全文
1399 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mich_LY 2015-02-26
  • 打赏
  • 举报
回复
适当主动破坏范式是可以提高查询性能的,但是就楼主的需求来看,直接外键关联查询不就可以了?
zxj828282 2015-02-19
  • 打赏
  • 举报
回复
投票他 top
uwolf1233 2015-02-14
  • 打赏
  • 举报
回复
vo是啥?尽量不要用java处理数据吧,数据库处理数据要比在java中快得多,java做个传递数据的桥梁就行了,数据模型,vo啥的都不需要的,直接获取数据库字段名和值就行,如果是vo,你的sql有别名怎么办
c497211969 2015-01-29
  • 打赏
  • 举报
回复
引用 6 楼 gagewang1 的回复:
第一种,为什么不select * from student a,book b where a.bookid=b..id?
个人认为这是一个设计的问题,PO层上面是VO,也就是VO必须依赖于PO的操作,而PO是对应的表中的单独每个数据表。
中华雪碧 2014-05-04
  • 打赏
  • 举报
回复
第一种,为什么不select * from student a,book b where a.bookid=b..id?
yuhouqingchen_2648 2014-05-04
  • 打赏
  • 举报
回复
不是很懂,貌似很牛
zhuyouyong 2014-04-30
  • 打赏
  • 举报
回复
引用 3 楼 rui888 的回复:
是不是用hibernate 一对多,多对一的。
不用hibernate
Kanepan 2014-04-28
  • 打赏
  • 举报
回复
方案1 ,在量不大的时候可以, 如果只是单笔查询,即使量很大也没什么问题。 方案2 ,数据库冗余,适当的冗余是很有必要的。 在BOOK 不经常更改的情况下适用。
tony4geek 2014-04-28
  • 打赏
  • 举报
回复
是不是用hibernate 一对多,多对一的。
jsshizhanab 2014-04-28
  • 打赏
  • 举报
回复
VO的意思是不是value object?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧