如何创建OracleDAO扩展了GenericDAO?

时间:2016-01-08 09:49:09

标签: java oracle java-ee

我的应用程序中有GenericDAO

abstract public class GenericDAO<T extends BusinessObject> {
  public abstract T create(Class<T> o);
  public abstract T read(BigInteger id);
  public abstract void update(T o);
  public abstract void delete(T o);
}

如何制作OracleDAO<T extends BusinessObject> extends GenericDAO<T>?我想使用Generics,但所有业务对象都有不同的创建逻辑Statement。我应该拒绝Generics并为每个业务对象创建特定的BusinessObjectOracleDAO吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,泛型类型T是指DAO持久存在的对象,而不是它来自的数据库。

我建议你让包结构传递这些信息。

将您的通用DAO接口放在名为persistence的包中,然后为其下的每个数据库实现提供包(例如persistence.oraclepersistence.mysql等。)其中每个都有一个为后备数据存储定制的GenericDaoImpl类。

我个人认为这是一个坏主意。您不应该过分依赖特定的数据库。可以用任何关系数据库和JDBC驱动程序一起编写该实现。切换数据库所需要做的就是实现模式,移植数据,并更改驱动程序的JAR。

是的,你必须为每个班级都有DAO。所有细节都不同:架构,查询,映射,创建。你应该尽可能地隔离它们。

我知道的最好的设计是Spring JdbcTemplate类。它消除了所有样板,并且易于处理关系数据库。