Java 关于将类实现导入DAO的问题
我必须实现只使用对象接口的DAO。现在我很难弄清楚如何使用Java 关于将类实现导入DAO的问题,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我必须实现只使用对象接口的DAO。现在我很难弄清楚如何使用EntityManager类的em.find() 我的具体问题是,如果可以将类的实现直接导入DAO,如本例所示: import dao.IStreamingServerDAO; import model.IStreamingServer; import model.impl.StreamingServer; import javax.persistence.EntityManager; public class StreamingSer
EntityManager
类的em.find()
我的具体问题是,如果可以将类的实现直接导入DAO,如本例所示:
import dao.IStreamingServerDAO;
import model.IStreamingServer;
import model.impl.StreamingServer;
import javax.persistence.EntityManager;
public class StreamingServerDAO implements IStreamingServerDAO {
protected EntityManager em;
public StreamingServerDAO(EntityManager em) {
this.em = em;
}
@Override
public IStreamingServer findById(Long id) {
return em.find(StreamingServer.class, id);
}
}
简单地将model.impl.StreamingServer
类导入到DAO中,我觉得这损害了一些隐私原则
问题是我不知道如何为em.find()
方法获取所需的类
请注意,我不能更改
findById
方法的返回类型,因为接口是这样定义的。(此实现现在也可以按预期工作)。是的,它是有效的。但为什么StreamingServer在impl包中?只要您使用在DAO中表示数据库对象的POJO就可以了。在model
文件夹中只定义了接口(如I
),在model.impl
文件夹中定义了所有类(如
)。这不是标准,还是你不应该做的事情?(在这个项目中,我无论如何都不允许更改结构)您认为DAO应该只与接口一起工作的假设在某种程度上是罪魁祸首。DAO使用“EntityClass”——在Java实体类中,大多数时候只是POJO——带有字段、getter和setter的类。它们没有实现的公共接口。好的,只要它们是POJO,就可以在DAO中使用它们。它只是有点奇怪,有接口的POJO的。不管是哪种方式,都可以。好的,谢谢,我必须为这个项目中的所有POJO使用预定义的接口。我还觉得有点怪。是的,StreamingServer是一个POJO。