领域模型,domain

失血:只有get set方法

贫血:除了get set方法还可能有不涉及数据库的逻辑,如计算逻辑等

充血:有持久层的逻辑,如User user = new User(); user各种set,最后user.save();

涨血:充血至少事务还在service层,涨血连service层都取消了。

昨天看了mockMvc的代码和httpClient的代码。发了2篇文章。

今天看了JFinal的代码。

我也曾经写过一个框架。

JFinal是充血模型。

JFinal的dao和model是一个东西:

public class User extends Model<User> {

public static final User dao = new User();

}

看了JFinal的dao的find() 方法实现,发现连反射都没有用,直接把数据库的resultSet(结果集)放到了一个Map里。

我以前写的SuperDao是反射直接把实体类的属性set进去了。

不过JFinal的实体类根本没有field,内部是一个Map,Map的key直接是数据库字段。

实际上JFinal 的实体类就是一个Map,变量名是数据库字段,这样造成了记忆负担。

不过也有解决方案:

public class User extends Model<User> {

public static final User dao = new User();

private static String id = "user_id";

private static String userName = "user_name";

}

int id = user.get(User.id); //----------------------------------> get方法就是从Map中取。这应该算是一个代理模式吧。

String userName = user.get(User.userName);

JFinal的表现层框架是靠filter拦截,JFinal类有一个Handler责任链。

Handler是一个abstract class。

public abstract void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled);

比我当初的实现强多了,我也是一个filter,不过filter里直接ActionMap映射到具体的Action类,直接execute了。

JFinal没有内置的IOC,不过可以用插件。

JFinal的事务是通过aop实现的。是Tx.class

需要aop事务增强的方法,只需要一个注解@Before(Tx.class)

没具体看,想来有方法前aop注解@Before,就一定有方法后aop @After吧。

就写这些吧。

最近看了一些东西,随便写写JFinal的一些东西吧相关推荐

  1. 【给自己看的笔记,随便写写】如何去调整游戏数值(新手为例)

    [随便写写]最近几天事情比较多,也没有多少闲工夫来试玩其他游戏写评测之类的.本篇仅仅因为忽然想到这个随便写写,大家如果有缘点开就随便看看就好了,当然有更好的思路可以指点一二. [前因]为了简化新手期知 ...

  2. 随便写写2014创业记(二)

    这篇文章既然已经开始写了,那就坚持写完吧.可能文章中有很多不符合各位胃口的,请暂且不要去理会其是不是做错了还是做对了,经过这么长的时间我明白一个很简单的道理,只要你做事情就肯定会有错的地方或者不如意的 ...

  3. Python 新手杂谈(随便写写)

    从接触Python开始,也过去了半年多了吧,个人觉得Python真是一门很好的语言. 为什么呢? 对于我这种没有正式接触过编程世界的我来说,之前看到都是符号和英文程序的我是崩溃的,可以说是完全看不懂, ...

  4. 【程序人生】不想学习,随便写写

    这篇博客,随便写写,也懒得整理格式,看到的人随便看看~ 一个月没写博客了,不是因为没有东西可以写,而是大四了,随之而来的是扑面而来的焦虑感. 大一大二幻想着出国,一开始家里也说不上同意说不上反对,后来 ...

  5. 我就随便写写,你也随便看看。

    我就随便写写 在这个百无聊赖的下午随便写写 来北京2个多月了,上班也有1个半月了 工作没有事可做,没人教,也不想学,越来越懒,还是一直都很懒. 我没玩微博,可是却把我的新浪微博首页设置在我的收藏夹里. ...

  6. rust怎么用items刷东西_rust服主怎么刷东西 | 手游网游页游攻略大全

    发布时间:2017-09-25 我的世界惊现全新无限刷物品bug 服主大大都要注意了.那今天给大家分享一个玩家无意间发现的新的无限刷物品bug,而且还是在服务器中哦!那感兴趣的玩家不妨进来看看哦! 在 ...

  7. 计算机安装系统有哪些东西,重装系统电脑里的东西还有吗|电脑重装系统后原来的东西还在吗...

    电脑重装系统以前的东西还在吗?重装系统一般会格式化C盘,也就是说重装系统肯定会导致文件被删除,但是重装系统之后硬盘原来的东西是否还有在,就不一定,重装系统方式不同,结果就不相同.重装系统可能导致电脑里 ...

  8. 你要确认你现在所拥有的东西,深挖你拥有的东西背后的价值是什么

    你要确认你现在所拥有的东西,深挖你拥有的东西背后的价值是什么. 我们每一个人都要确认你现在所拥有的东西. 例如你有一个什么样的产品,你要去卖什么样的产品,你有什么项目,你有什么资源,你有什么门店生意, ...

  9. 随便写写,都是我从网上收集的东西!

    linux系统分区方案: 根分区40-50g /opt 大于60g /home 大于20g /var 大于20g /media  /run   /tmp   挂在tmpfs /************ ...

最新文章

  1. python中forward_符合python风格的对象
  2. jzoj3462-休息【归并排序,逆序对】
  3. WIN8系统安装软件时提示“扩展属性不一致“的解决方法
  4. python数据驱动登录_python之数据驱动ddt操作(方法三)
  5. 论文笔记_S2D.61_2019-CVPR-DeepLiDAR:基于稀疏激光雷达数据和单张彩色图像的户外场景的表面法线引导的深度预测
  6. java listener 原理_Java三大器之监听器(Listener)的工作原理和代码演示
  7. mysql 修改字段名 sql,MySQL中使用SQL语句对字段进行重命名
  8. 阵列天线方向图-均匀直线/平面阵列matlab仿真
  9. 微型计算机延时,延迟时间
  10. Coursera | Andrew Ng (02-week-1-1.12)—梯度的数值逼近
  11. 【聚类算法】基于matlab划分法k-means聚类算法【含Matlab源码 1941期】
  12. 普华永道高级JAVA面试记录
  13. #2002 SIGSEGV(SEGV_MAPERR)
  14. 基于深度学习算法的语音识别(华为云)
  15. 小程序占服务器空间吗,小程序会占用手机存储空间吗?| 小程序问答 #21
  16. 微信小程序自定义tabbar底部菜单
  17. Pch文件如何配置?
  18. 作为程序员,你可以不知道技术网站,但是不能不知道什么是a站、b站、c站、d站、e站、f站、g站、h站…z站?
  19. C++ 和 EasyX绘制心形代码
  20. C语言 实现离散数学合式公式真值表

热门文章

  1. 华夏千秋事,风雨亦为之
  2. 我们使用 Kafka 生产者在发消息的时候我们关注什么(Python 客户端 1.01 broker)...
  3. PPM-Pyramid pooling module
  4. 英语听力采用计算机化考试,一图读懂北京高考英语听力机考流程,附特点及应对建议...
  5. 从春招到秋招,我的曲折网易路 | 掘金技术征文
  6. 如何在功能、特点、价格和性能方面选择PDF编辑器?
  7. 《伟大是熬出来的》冯仑与年轻人闲话人生之一
  8. ibm3400服务器改win7系统,dell3578win10改win7系统bios如何设置_戴尔win10改win7系统bios设置步骤...
  9. 洛谷 [樱花] 题解
  10. android x86 鼠标指针,x86中断完全版