gpt4 book ai didi

java - 为每个 Dao 类创建 BaseDAO

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:22 26 4
gpt4 key购买 nike

我创建了一个 spring 应用程序,我决定在其中添加一个 BaseDAO 来消除冗余创建,每个 dao 的更新、删除、findByid 和 findAll 方法。所以我创建了一个 baseDao,每个 dao 都应该扩展这个 BaseDAO。

BaseDaoImpl

public class BaseDAOImpl implements BaseDAO{

SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sf){
this.sessionFactory = sf;
}

@Override
public void create(ModelBase modelBase) {

Session session = this.sessionFactory.getCurrentSession();
session.persist(modelBase);
}

@Override
public void update(ModelBase modelBase) {

Session session = this.sessionFactory.getCurrentSession();
session.update(modelBase);
}

@Override
public Collection findAll(Class aClass) {

Session session = this.sessionFactory.getCurrentSession();
Collection modelCols = session.createQuery("from "+aClass.getSimpleName()).list();
return modelCols;
}

@Override
public ModelBase findById(Class aClass, Integer id) {
Session session = this.sessionFactory.getCurrentSession();
ModelBase modelBase = (ModelBase) session.load(aClass, new Integer(id));
return modelBase;
}



}

然后我将这个 Dao 扩展到每个 DAO

EmployeeDAOImp

public class EmployeeDAOImpl extends BaseDAOImpl implements EmployeeDAO{

private SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sf){
this.sessionFactory = sf;
}
}

我创建了一个这样的 BaseService。但是当我尝试从 EmployeeDAO 访问 BaseDAO 方法时,它返回空指针异常。为什么会这样。我不想使用谷歌的 genericDAO。因为我们应该创建 DAO对于每个模型。我想消除这个。所以我按照这个方法。

最佳答案

您是否特别考虑过 Spring Data 项目和 Spring Data JPA?

这将为您节省大量时间,因为您不再需要从头开始编写 DAO/存储库,您需要做的就是启用 Spring Data JPA,并添加所需的接口(interface)。它应该为您节省大量时间。

关于java - 为每个 Dao 类创建 BaseDAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27242839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com