把领域模型封装成BEAN有什么好处

J-will 发布于 2011/08/08 12:24
阅读 922
收藏 1

书上讲,每个表最好对应一个BEAN,然后CRUD都针对BEAN来进行,但是我觉得这么做好处在哪里呢?就可以用面向对象的思维来操作数据库了吗?

但是我觉得BEAN还是不够灵活,不如做成MAP怎么样,我可以写针对MAP的CRUD操作,每张表我都认为它的一行对应一个MAP,这样是不是抽象的层次更加高一点?我觉得这样比较灵活,如果BEAN要做到和MAP差不多的灵活,估计要用到大量的reflect api 吧。

但是我觉得这样还是不够好,在执行query操作的时候,如果返回的是List<Map>,确实有方便的地方,但是在更新,删除,插入操作的时候,用BEAN或者MAP都很不方便:我现在的做法就是从HTTP请求中  getParameter()  然后  new Domain(),然后  setXXX,最后再调用针对BEAN或map的CRUD方法,我觉得这样很繁琐,不如直接用SQL语句来的方便。

我JAVA新手,懂得不多,有高手能指点我一下吗?谢谢!

加载中
0
大东哥
大东哥

引用来自“J-will”的答案

引用来自“喵了个咪”的答案

好处是bean里的属性一目了然,map就要靠文档、注释和猜,哦,还有断点。
谢谢!不过我觉得MAP有一个好处就是,如果一个查询语句涉及两个表的话,如果返回的是一个MAP的集合的话就会很方便,如果用BEAN ,我不知道怎么去处理,用结果集分别去填充两个BEAN 然后再从BEAN里去读取吗?好像很麻烦。
你这个就是表之间的关系了,orm工具(不一定非得hibernate)对这一块也有较好支持,建议去了解一下。
0
大东哥
大东哥

如果你用的是orm工具,你所说的那些问题,都给你做好了。

如果不用,封装成bean或map,哪个方便哪个来,不过封装成bean,更利于团队开发,因为大家都习惯bean这种方式,虽然不知道有什么好处。

0
戴威
戴威
好处是bean里的属性一目了然,map就要靠文档、注释和猜,哦,还有断点。
0
lxbzmy
lxbzmy

什么样的程序的需要什么样的方法,不要因为bean或者map而纠结。

有些地方需要bean来提高可编程序,有些地方map开发起来更快。

0
J-will
J-will

引用来自“东明”的答案

如果你用的是orm工具,你所说的那些问题,都给你做好了。

如果不用,封装成bean或map,哪个方便哪个来,不过封装成bean,更利于团队开发,因为大家都习惯bean这种方式,虽然不知道有什么好处。

谢谢,可能真是这样吧,几乎所有的书都说要用BEAN ,用hibenate感觉配置的东西会不会太多,现在我还不想学框架,自己再思考思考。
0
J-will
J-will

引用来自“lxbzmy”的答案

什么样的程序的需要什么样的方法,不要因为bean或者map而纠结。

有些地方需要bean来提高可编程序,有些地方map开发起来更快。

谢谢额!
0
J-will
J-will

引用来自“喵了个咪”的答案

好处是bean里的属性一目了然,map就要靠文档、注释和猜,哦,还有断点。
谢谢!不过我觉得MAP有一个好处就是,如果一个查询语句涉及两个表的话,如果返回的是一个MAP的集合的话就会很方便,如果用BEAN ,我不知道怎么去处理,用结果集分别去填充两个BEAN 然后再从BEAN里去读取吗?好像很麻烦。
0
三逢
三逢
你可以在bean里面放一个map,getter和setter都直接操作map,bean和map的好处都有了,不过比较占内存
0
J-will
J-will

引用来自“东明”的答案

引用来自“J-will”的答案

引用来自“喵了个咪”的答案

好处是bean里的属性一目了然,map就要靠文档、注释和猜,哦,还有断点。
谢谢!不过我觉得MAP有一个好处就是,如果一个查询语句涉及两个表的话,如果返回的是一个MAP的集合的话就会很方便,如果用BEAN ,我不知道怎么去处理,用结果集分别去填充两个BEAN 然后再从BEAN里去读取吗?好像很麻烦。
你这个就是表之间的关系了,orm工具(不一定非得hibernate)对这一块也有较好支持,建议去了解一下。
谢谢~ 回答两次了,呵呵,我想我也应该去了解一下ORM框架了。
0
Andre.Z
Andre.Z

BeanUtils直接由表结构反射生成DynaBean(当然最好缓存一下),不用写实际的Bean,但是又包含了数据类型了,甚至你再包装一下,可以获取到数据库表的主键等等。更新、插入、删除的时候,传个Map就行了,更新插入删除的时候,Map的值转入DynaBean,根据获取到的主键字段,可以自动构造sql命令,而且数据类型的转换大部分BeanUtils就做了,小部分不常用的类型,你可以进Map之前处理一下就是了。查询的话,BeanUtils的ResultSetDynaClass就可以直接由ResultSet得到集合数据,再获取ResultSetDynaClass里面的DynaBean,然后你可以将DynaBean转成Map,这样出来的Map,value的数据类型和表里是一致的,就类似于Bean。一整个处理逻辑,可以写成工具类,然后,CRUD操作,不要太方便了。
基本都懒得写Bean了,ORM之类的,很久没用了。
个人意见,仅供参考。

返回顶部
顶部