最近用jfinal给客户开发了个项目, 零零散散开发了6个月, 中途用户的需求一变在变,开发中遇到一些问题和困惑, 也不晓得是不是我自己用的方式不对,总之, 先分享下我使用的方式以及遇到的难点吧。
给大家分享下使用jfinal开发这个项目的体验:
表过多、尤其是表字段过多的时候, 不好管理。
这里主要体现在jfinal的Model上。 由于jfinal使用中没有javabean类, 直接使用的Model来实现数据库与bean的对应关系。 所以, 增加字段的时候很方便。 一旦涉及到修改字段时, 就需要一个个的把原字段的类型、字段名都要对应一个文件一个文件的find出来改正。 ide没有相应的错误提示, 找起来没有javabean报错时好找。 也没法用编辑器的重构功能一次性重构。
表过多还好一些, 表字段过多就有点crazy了。 每次保存的时候, 如果涉及到全部字段的保存(不是前端直接传递过来的那种), 就需要一个个的set进去。 要小心翼翼, 唯恐漏掉或写错。
ActiveRecord是个好东西, 尤其是多表联合查询的时候, 特别方便的写sql。 但一单遇到返回特别多的字段的时候, 就有点纠结了。 这里就得需要log输出一下返回的数据, 然后再一个个的再前端展示。 十来个还凑合,一上30, 我的天呐~~~
加载Enjoy的时候, 明明设置了Engine的devModel=true。 每次修改模版文件的时候, 都会导致jetty重启。 纠结~~~ 如果能模版引擎和class文件分开加载, devModel=true的时候就不重启就能加载这些文件。 啧啧~~ 世界一片美好
以上就是我目前的使用总结。
项目:JFinal
action 查询获取数据的时候,为啥要先 log 输出再一个在前端展示呢? 直接展示就可以了,展示的时候会调用 model 的 getter 方法
每次修改模板导致重启,应该是你将模板放在了 src/main/resoures 目录下面,由于这个目录下面的所有资源会被 java 编译至 target/classes 下面,而 jfinal 是通过监控这个目录下面的文件是否则修改而重启的,这的确倒是一个问题,我这里先做下备忘,下一版本改进一下这里,这个改进很容易,只需要监控 .class 后缀的就可以了。这个反馈相当重要,因为后续的 jfinal 将向微服务迈进,所以正好模板要放在 src/main/resources 下面
感谢你反馈这么多,绝大部分反馈还是对 jfinal 用得不熟导致的,建议看一下 model 生成的文档:
http://www.jfinal.com/doc/5-4
在使用时,可在首页下载 jfinal-3.5-demo.zip 这个文件,里面有一个生成器,直接改改参数就可以用在你自己的项目中了
使用 jfinal 开发的项目 200 多张表是很常见的情况,有个别情况有超过一千张表的,用生成器生成 model 也就 2 秒左右,此外,复杂 sql 管理要全用 jfinal 的 sql 管理功能,用起来爽得没法说了:
http://www.jfinal.com/doc/5-13