【发布时间】:2010-02-12 16:28:15
【问题描述】:
所以在最近的一个项目(一个小型内部工具)中,我想使用我们通常在所有项目中使用的 ORM 工具来试验 not。原因是我特别不喜欢它们,特别是在具有复杂对象层次结构和关系的复杂项目中。使用 ORM 会变得难以调试性能问题以及由 ORM 库可能会在后台进行“优化”的许多事情引起的其他问题。
所以当我没有 ORM 工具的帮助时,我正在考虑一种延迟加载对象的某些属性的方法。假设一个例子:
class Student {
private List<Course> courses;
public List<Course> getCourses() {...}
public void setCourses(List<Course> courses) {...}
}
所以在这种情况下,我们懒惰地放置“课程”。所以我想要一种方法来区分“课程”尚未从数据库加载的场景和“课程”实际上为空的场景,即使在从数据库中获取后也是如此。
我可以实现它的典型方法是什么。我在想可能会关联一个“Course”类型的特殊空对象,表示数据库中实际上不存在数据。而 java null 意味着数据不是从数据库中获取的。但这会破坏抽象,因为此类 lazy 属性的 getter 需要决定访问 DAO 以获取数据。
【问题讨论】: