在看看一些JPA代码,我看到:为什么JPA中有这么多接口?
public interface Dao<T extends DomainObject>
public interface EventDao extends Dao<Event> - nothing added to Dao<Event>
public abstract class AbstractDaoJPAImpl<T extends DomainObject> extends JpaDaoSupport implements Dao<T>
public class EventDaoJPAImp extends AbstractDaoJPAImpl<Event> implements EventDao
为什么这些2个接口的需要?为什么不能简单地使用
public abstract class AbstractDao<T extends DomainObject> extends JpaDaoSupport
public class EventDao extends AbstractDaoJPAImpl<Event>
我来自Ruby on Rails世界,事情似乎更简单。我很肯定这种Java方法有很多优点。我经常可以认识到什么时候应该使用一个接口,但有时候我会觉得Java开发人员的界面很疯狂。
您在混合使用JPA和DAO概念。 JPA!= DAO。它们可以一起使用,但通常JPA被视为DAO的替代品,因为JPA由*标准*支持。相关:http://stackoverflow.com/questions/3818589/java-ee-architecture-are-daos-still-recommended-when-using-an-orm-like-jpa-2 – BalusC
找出JPA本身是什么,并重新发布一个真正的问题 – DataNucleus
实际上,您需要一个DAO接口,以便您可以轻松切换到另一个实现(例如模拟单元测试的dao's)。你也可以很容易地做一些事情,比如使用switch dao实现,将负载测试结果与不同的dao集合或类似的东西进行比较......并且使用通用接口来避免将所有基本crud方法添加到所有非通用dao接口 –