论坛首页 Java企业应用论坛

一个关于实体对象和值对象的困惑

浏览 12231 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (9) :: 隐藏帖 (3)
作者 正文
   发表时间:2009-05-10  
有一个叫做jconfig的小东西可以解决你的问题。它支持xml,Database等方式实现对各种“类别、职称、性别、学历...”的管理。
0 请登录后投票
   发表时间:2009-05-10  
当然没有必要建立AddModuleService,XXType...只因一个原则,不要重复的代码。
只因有多个具体实现的时候接口才有存在的必要,同样的道理,dao,如果不是复用的需要,也不必存在。你所说的模块结构是一个足够灵活,但对大多数情况却无比臃肿的结构。
0 请登录后投票
   发表时间:2009-05-10  
你想把它持久化的话,多的是地方。写到配置文件里面都行。
0 请登录后投票
   发表时间:2009-05-12  
本人现在还在自学,不过说一下自己的见解,诸位专家不要见笑。
你可以在其他的Service类中实现你想要的操作么,然后在其他的Action类中加上增加或删除操作么,不过这个Action类应该继承DispatchAction类,并且请求参数设置成Method,另外字段很少你没有必要为其建立ActionForm啦直接获取请求参数,再不行的话你就不要映射啦直接用原始的SQL语句,由于那个表设计的操作字段很少么也不是太复杂!
0 请登录后投票
   发表时间:2009-05-16   最后修改:2009-05-16
jeffen2006 写道
现状:
我们现在有一个管理商家的系统,有一个商家的实体类Busi,一个商家注册方式的实体类Addmode。同时分别对应2张表。
Busi多对一关联Addmode。Addmode只有一个非主键属性type,属性值也相对固定,在数据表中只有2条记录——网站注册/代理商注册。

这种情况在我们系统中还有几个地方存在:比如投诉实体类,投诉类型实体类。

当时采用这种方式的目的是因为我们的系统有一个后台管理模块,这些类型是可以在这个管理模块进行维护的,增删操作。然后前台页面就会自动数据库中取到新的值,方便日后的维护。

困惑:
我们是采用hibernate作持久层的,我现在觉得为了一个非常简单的基本固定的属性,我们要维护有一个类、一个hbmxml文件、一个DAO接口、一个DAO实现类、一个Service接口、一个Service类,而仅仅是为了在后台可以对它进行增删,这样的成本太高了。

最近看了一些值类型的文档,感觉这个Addmode应该是属于值类型,但是又不知道怎么重构到现有项目,并且满足后台自动增删操作。

各位专家有什么好的建议?



感觉楼主不是对值对象和实体对象的产生了困惑,而是对这样简单的CRUD操作,需要维护hbm.xml、dao、daoimpl、service、serviceimpl这么多的东西感到困惑。个人觉得这是过度设计了,而且是为了使用Hibernante而使用hibernate,为了迎合针对接口编程的概念而使用接口。像这么简单的功能,个人觉得完全用一个dao(可以用jdbc直接搞定,烦得去配hibernate或者ibatis),一个service直接实现就得了(或者service都不用,因为用service的话,service估计也只是一个delegate),以后如果需要维护更复杂的东西,再想办法重构。毕竟程序这东西,做出来总是要随着业务的变化不停修改的,而且重构活动是开发过程很重要的一个活动。
0 请登录后投票
   发表时间:2009-05-20  
tibetjungle 写道
jeffen2006 写道
现状:
我们现在有一个管理商家的系统,有一个商家的实体类Busi,一个商家注册方式的实体类Addmode。同时分别对应2张表。
Busi多对一关联Addmode。Addmode只有一个非主键属性type,属性值也相对固定,在数据表中只有2条记录——网站注册/代理商注册。

这种情况在我们系统中还有几个地方存在:比如投诉实体类,投诉类型实体类。

当时采用这种方式的目的是因为我们的系统有一个后台管理模块,这些类型是可以在这个管理模块进行维护的,增删操作。然后前台页面就会自动数据库中取到新的值,方便日后的维护。

困惑:
我们是采用hibernate作持久层的,我现在觉得为了一个非常简单的基本固定的属性,我们要维护有一个类、一个hbmxml文件、一个DAO接口、一个DAO实现类、一个Service接口、一个Service类,而仅仅是为了在后台可以对它进行增删,这样的成本太高了。

最近看了一些值类型的文档,感觉这个Addmode应该是属于值类型,但是又不知道怎么重构到现有项目,并且满足后台自动增删操作。

各位专家有什么好的建议?



感觉楼主不是对值对象和实体对象的产生了困惑,而是对这样简单的CRUD操作,需要维护hbm.xml、dao、daoimpl、service、serviceimpl这么多的东西感到困惑。个人觉得这是过度设计了,而且是为了使用Hibernante而使用hibernate,为了迎合针对接口编程的概念而使用接口。像这么简单的功能,个人觉得完全用一个dao(可以用jdbc直接搞定,烦得去配hibernate或者ibatis),一个service直接实现就得了(或者service都不用,因为用service的话,service估计也只是一个delegate),以后如果需要维护更复杂的东西,再想办法重构。毕竟程序这东西,做出来总是要随着业务的变化不停修改的,而且重构活动是开发过程很重要的一个活动。


楼上说的对的,楼主如果为了使用hibernate而故意去迎合它的话,那么将来受累的就是你自己。一些实体,一些描述这些实体的值对象,你要怎么管理它们才能获得更高的可扩展性,可维护性,可以重用性?而不至于掉入到hibernate的设计陷阱中。
0 请登录后投票
   发表时间:2009-05-25  
alter table Busi add (xtype smallint);
BusiSerice2 extends BusiSerice
好像在怎么做都有那么麻烦.
0 请登录后投票
   发表时间:2009-09-18  
当你在设计的时候一直不断的围绕着数据库表来思考的话,你基本上完成不了DDD的设计上的任何优势。或者更确切地说,连面向对象的程度都难了。
0 请登录后投票
   发表时间:2009-09-19  
。。。。hbmxml文件你手写么?DAO接口你还每类一个么?service接口把它拆分,基本上你这几个类就是CRUD,
只要自动生成hbmxml就行了,service,dao都共用,
是不是值对象,不是你这样来界定的,一个对象可以一会儿是值对象一会儿是实体对象。

非要找一个理由让你们心安理得的话,我建议一个:
一致性:"所有的实体类我们都是这样搞的,这几个我们也不打算例外",这样团队成员不会犯错。

最后,建议lz注意不时改进生成工具。

jeffen2006 写道
现状:

当时采用这种方式的目的是因为我们的系统有一个后台管理模块,这些类型是可以在这个管理模块进行维护的,增删操作。然后前台页面就会自动数据库中取到新的值,方便日后的维护。

困惑:
我们是采用hibernate作持久层的,我现在觉得为了一个非常简单的基本固定的属性,我们要维护有一个类、一个hbmxml文件、一个DAO接口、一个DAO实现类、一个Service接口、一个Service类,而仅仅是为了在后台可以对它进行增删,这样的成本太高了。

最近看了一些值类型的文档,感觉这个Addmode应该是属于值类型,但是又不知道怎么重构到现有项目,并且满足后台自动增删操作。

各位专家有什么好的建议?

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics