2017-04-25 10:36
@whoismy8023 追求极简的设计,一开始会有觉得少了点的感觉,但少即是多,灵活去组合各种核心功能就能实现非常灵活自由的功能
2017-04-25 00:05
@whoismy8023 hibernate 的 HQL 就是在 HQL 中使用实体属性,而非使用的字段名,付出的代价是极大的,例如需要发明 HQL,不仅徒增学习成本,而且带来了非常大的麻烦
增删改查,通常增删改是不需要写数据表字段的,你试一下 model.save(),model.update()、model.delete() 就知道这三个方法完全不需要知道字段名
只有查询才与表字段有关,hibernate 的坑在此就不在赘述了。你感觉缺少了数据库字段和实体对象属性的对应关系,这个关系并不缺少, jfinal 通过反射数据库表在系统启动时就自动建立了,如果你是希望用注解或者 XML 去配置这种对应关系,那就严重违备了 jfinal 的极简设计风格
hibernate 时代就是利用 xml 或 annotation 建立了实体属性与表字段的关系,其缺点在此就不在赘述了
2017-04-24 20:29
@why jfinal template engine 已经提供了 #escape(...) 这个指令来处理,可以用一用
此外,在 model 中使用 filter 可以利用 jsoup 很精准地指定要过滤的标签类型,属性,例如过滤 script 标签,对于原始数据并不存在多少污染,因为类似于 script 这样的标签是一定要过滤掉的
2017-04-24 17:50
数据库字段变更,运行一下生成器自动搞定,然后对其 model 的 getter、setter 有依赖的地方 eclipse idea 会显示出要修改的地方,重构很便捷
jfinal 选择以数据库为基础,往上去搭建,数据结构是基础,相对稳定。如果从 model 出发,反向生成 sql 去修改数据库会很麻烦,例如你的改表结构的 sql 控制字段的长度、类型这都要额外写代码,因为仅有 model 中的属性,你生成 sql 的时候是无法知道字段长度的
因此,你还要为 model 属性添加注解,用来指示建表、改表结构 sql 的生成,而 jfinal 的以数据库为出发来得到 model 会便捷省事很多,也更稳固,不容易出问题,我个人不是太信任用 sql 去改表结构这种搞法的
你自己可以试试实现一个从 model 出发,去改表结构、生成表的功能,一定会比 jfinal 现在的设计要麻烦得多
2017-04-21 16:26
@leomj jfinal template engine 考虑过直接支持 isXxx() 方法的 model.xxx 形式的访问,为了提升性能,少去判断这个 isXxx() 方法是否存在是权衡后的结果
因为 object.field 这种访问方式极其普遍,可以支持 java bean、model、Map、public field 等形式的存取,而 isXxx() 这种用法频率并不高,并且 isXxx() 这种方法调用可以搞定这种情况
2017-04-21 15:59
@qiongaxiu 习惯于传统方式的用传统方式也挺好