首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

EWeb4J-1.9-持续改善ActiveRecord支持【级联】操作

2012-06-28 
EWeb4J-1.9-继续改善ActiveRecord支持【级联】操作老习惯:约定优于配置,配置覆盖约定,少侵入,开发者控制一切

EWeb4J-1.9-继续改善ActiveRecord支持【级联】操作
老习惯:约定优于配置,配置覆盖约定,少侵入,开发者控制一切

由于之前已经封装好CascadeDAO接口。因此本次在ActiveRecord中增加级联操作就显得很简单了。

这个是使用的时候:
PetControl.java

@Validate(value={"pet.*"}, except={"pet.id"})@Transactionalpublic String create(Validation val, Map model) {if (val.hasErr())return JsonConverter.convert(val.getAllErr());pet.create();pet.cascade().select("fied1","field2");pet.cascade().insert("fied1","field2");pet.cascade().update("fied1","field2");pet.cascade().delete("fied1","field2");model.put("types", TYPES);return "index";}

可以看到,新版本的级联操作依然是开发者主动发起的,没有懒加载、自动级联这些概念。开发者控制一切。
实现原理:
Model.java
public Cascade cascade(){Cascade cascade = new CascadeImpl(DAOFactory.getCascadeDAO(dsName), this);return cascade;}

Cacade.java
public interface Cascade {void select(String... fields);void update(String... fields);void delete(String... fields);void insert(String... fields);}

CascadeImpl.java
public class CascadeImpl implements Cascade{private CascadeDAO cascadeDAO;private Model model;CascadeImpl(CascadeDAO cascadeDAO, Model model){this.cascadeDAO = cascadeDAO;this.model = model;}public void select(String... fields) {this.cascadeDAO.select(model, fields);}public void update(String... fields) {this.cascadeDAO.update(model, fields);}public void delete(String... fields) {this.cascadeDAO.delete(model, fields);}public void insert(String... fields) {this.cascadeDAO.insert(model, fields);}}


可以看到其实就是代理了下这个 CascadeDAO 而已。

PS:数数日子,1.9-SNAPSHOT也已经好些日子了。本来打算4-8号发布的。当时由于验证器这块还是不够方便和有效。现在总算解决。我想差不多就发布了吧。进行这个版本最后的Demo测试。等我写好用户文档,也就差不多发布了  :b

热点排行