4
回答
ActiveJDBC 关联数据加载两种的模式

假设两个 Model 类,一个是地址簿(Address),一个是用户 (User),二者是一对多的关系,一个用户有多个地址簿信息。

看看下面这段代码:

List<Address> addresses = Address.findAll();
 
for(Address address: addresses){
   User user = address.parent(User.class);
   System.out.println(user);
}

以上代码 ActiveJDBC 在执行的时候,会变成 1+N 条 SQL,如果你只关心 Address ,并不需要 User 的话,这种方法可以节省内存。但如果需要 User 资料时,这种方法的性能实在太差。

换另外一种方法来获取数据:

List<Address> addresses = Address.findAll().include(User.class);
 
for(Address address: addresses){
   User user = address.parent(User.class);
   System.out.println(user);
}

多了一个 include(User.class) 而已,立即将查询复杂度从 1+N 变成固定的 2 .

相当于 ActiveJDBC 会执行 findAll 的 SQL ,然后再批量加载 User 对象。

这个还是非常的方便。

举报
红薯
发帖于7年前 4回/1K+阅
顶部