【发布时间】:2012-02-04 17:39:20
【问题描述】:
使用通用 dao 接口:
public interface GenericDAO<T extends DataObject, ID extends Serializable> {
T save (T object);
T load (ID id);
void remove (ID id);
Class<T> getPersistedType();
}
您使用自己喜欢的 ORM 实现 GenericDaoImpl,例如 Hibernate 来处理加载和持久化通用对象。您最终会得到 UserDao、StoreDao、TransactionDao、PetsDao 和 50 个其他 Dao,它们对于如何保存、加载和删除对象都有不同的逻辑。您可能还有许多 GenericDao 实例,每个实例都对应一个只需要泛型处理的类类型。
我希望实现一个服务,该服务将为任何 DataObject 处理这些操作,并选择正确的 Dao 来执行此操作。如果此对象有 Dao 实现,则使用它,否则使用 GenericDao。
一种方法是使用 DaoFactory if/else 语句来检查对象类型,并返回相应的 Dao。但是,这将需要您每次添加新的 Dao 时都对工厂进行修改,并且不是很优雅。
有什么更好的方法来实现这一点?换个方式问, 你如何找到与特定类相关的道?
【问题讨论】:
标签: java persistence