关于springboot集成jfinal record在微服务下的结构

是这样的

jfinal model实际上可以看做是dao层,那业务层在service内。

假设目前需要有一个多表查询的需求,按照正常逻辑应该是在dao层定义一个方法来写sql和返回结果,然后在service层调用使用(还是想遵循service层不含任何sql语句,只包含业务逻辑)。

因为我目前的应用场景是在微服务下,原计划把model抽取出来公共放置(因为不排除其他服务需要使用此model定义)。但是这样实际上model是充血模型,已经不适合作为跨微服务间的公共数据传输定义了。此时只能单独定义对象作为微服务间的数据传输承载对象。

还请问各位老大,我的理解是否正确。请指导下。谢谢

评论区

hen

2019-04-26 21:17

但是我的描述和波总早之前有个回复是矛盾的,波总但是建议把model层抽取做成独立项目,但是如果那样,我说描述的问题应该怎么合理呢?波总早之前的回复见 https://www.oschina.net/question/2771957_2180151 。第二页回复下

JFinal

2019-04-27 10:32

@hen model 层抽取成独立的类似于 maven module 的东东,或者抽取成独立的项目可以 mvn install 到本地 maven 库供别的项目引用

service 层专注写业务,注意数据库查询也是放在业务层之中的,sql 可以放在外部 sql 模板文件之中,小型项目也可以放在 service 之中

model 里面不要写业务逻辑,更不要有 sql 查询,让其成为一个承载数据的容器以及与数据库表对应的一个东东

model 里面可以添加一些字段常量,以及这些常量判断的方法,例如:
public class User extends BaseUser {

// 以下三个常量为 status 字段的三种值,只允许这三个值存入数据库
public static final int STATUS_LOCK_ID = -1; // 锁定账号,无法做任何事情
public static final int STATUS_REG = 0; // 注册、未激活
public static final int STATUS_OK = 1; // 正常、已激活

// 以下是添加的一些与字段值有关的工具类方法
// 状态是否 ok
public boolean isStatusOk() {
return getStatus() == STATUS_OK;
}

// 状态为注册
public boolean isStatusReg() {
return getStatus() == STATUS_REG;
}

// 状态为锁定
public boolean isStatusLockId() {
return getStatus() == STATUS_LOCK_ID;
}

.... 其它部分省略
}

hen

2019-04-27 15:37

好的,谢谢 @JFinal

热门反馈

扫码入社