JAVA不用实体类用map_Java开发业务模块能不能不用实体类?

其实你的提的这个问题, 包含3个问题

1 java能否支持富血模型?

模型分2类, 贫血 or 富血.

贫血模型,就是一个对象里只有属性,如java中的pojo,不包含业务代码, 业务代码都写在service层. java中普遍使用的controller->service->dao->entity的分层方式, 就是这种贫血模型的实现. 贫血模型很貌似很经典, 但是写起来很啰嗦, 如果结合mybatis之类的, 多加几个mapper层, 实现就变得很复杂. 同时业务逻辑多起来后, service层的代码会爆炸.

富血模型, 就是属性和方法都封装在Domain Object里, 业务代码也写在里面. Service层功能很薄, 基本可以忽略. 而分层就会简化为controller->model, php的kohana跟ruby on rails都是这种模型. 富血模型很简单, 就2层, 容易把控, 复杂度不会爆炸, 但是逻辑可能会分散到各个model中, 不像贫血模型在service层统集中处理. 同时, 这种职责拆分, 很切合OOP模式, 利于维护. 一般配合ORM框架, 代码会很精简, 少就是好.

既然ruby/php等动态语言支持富血模型, 那么java可以支持吗? 当然可以, 语言不会限制你采用某类模型, 只是静态语言要考虑的实现细节会多很多

2 json做模型?

在js/php等弱类型语言中, 类型简单(如js的object, 如php的array), 功能强大, 操作灵活, 此等彪悍功能谁不想用. 但是强类型语言必须要兼顾各种类型, 像java你可以用map来模拟json, 但是你要操作map中的属性(如字符串操作/数值操作)时, 你就要进行明确的类型转换. 如果你只是简单的使用map来代替model, 那么类型转换的代码将充满你的屏幕, 等同于丢了西瓜捡了芝麻, 为了所谓的灵活, 引入了更大的复杂度.

当然, 用map来代替明确的属性定义是否可行? 当然可行, 只要你兼顾解决好类型转化就好.

3 在service层做校验? 用注解做?

其实每一层都需要进行数据校验, 但是如果你比较偷懒, 可以递延到底层(如dao/orm层). 只在service层做的话, 就会很啰嗦

校验用注解来做? 随便啊. 用代码做, 用表达式做都可以.

谁说java天生贫血, 我就做了一个富血的实现, 详见我的框架.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值