Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于将类实现导入DAO的问题_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java 关于将类实现导入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

我必须实现只使用对象接口的DAO。现在我很难弄清楚如何使用
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。