2012-02-22 165 views
0

假设我有一个包含Venue的模型对象Event。当我查询数据库来填充场地时,我只想存储可用于延迟加载Venuevenueid延迟加载模型

我有数据访问类Events(复数)与函数功能像Event findEventByName(String name)。与其他模型对象类似。如果我Event课,我有getVenue这样的:

public Venue getVenue() { 
    if (this.venue == null) 
     this.venue = Venues.findVenueById(this.venueid); 
    return this.venue; 
} 

这是可行的,但它将对夫妇​​我的模型我的数据访问。我认为我的设计不是真的“正确”?那么我该如何改变它。对于这个学术项目,我认为我不会使用像Hibernate这样的第三方库来了解如何实现这一点。

+1

实际上并不是那么糟;我想问题是你有多少种不同的数据访问方式?如果你有很多,那么你可能想通过接口来做,否则它看起来没问题。 – 2012-02-22 03:08:27

回答

1

我认为你是正确的,它不是最好的设计来耦合你的对象模型到你的数据访问。

关系映射器的现代对象非常先进。例如,EclipseLink可以动态修改类文件的字节码,以提供延迟加载等功能。他们称之为weaving

+0

呵呵,那么也许我可以保持原样,或者当我填充我的模型时,我也注入了DataAccess对象。 – 2012-02-22 07:03:24