当前位置: 首页 > 面试题库 >

使用注释使用Spring Hibernate编写更少的DAO

锺离卓
2023-03-14
问题内容

我的Spring + Hibernate配置文件很小而且非常紧凑。我使用自动扫描来找到我的模型实体/目标。

我不想为层次结构中的每个实体编写DAO + DAOImpl。

有些人可能有资格拥有自己的东西,就像他们与其他实体的关系复杂并且需要的不仅仅是基本的CRUD功能一样。但是其余的…

有什么办法可以绕过事实上的标准?

说,例如通用DAO,例如:

http://www.ibm.com/developerworks/java/library/j-genericdao/index.html

然后我可以做类似的事情

  GenericDao dao = appContext.getBean("genericDao");
  dao.save(car);            
  dao.save(lease);

注释可以吗?我不想在xml中配置任何内容。如果我不能完成上述操作,是否仍然可以使用一个类似GenericDaoImpl.java的程序:

 @Repository("carDao")
 @Repository("leaseDao")
 class GenericDaoImpl extends CustomHibernateDaoSupport implements GenericDao {
 ...
 }

然后

  GenericDao dao = appContext.getBean("carDao");
  dao.save(car);            
  dao = appContext.getBean("leaseDao"); //carDao is garbage coll.
  dao.save(lease);

这是实用的吗?


问题答案:

使用泛型,您可以尝试如下操作:

@Repository
@Transactional
public class GenericDAOImpl<T> implements GenericDAO<T> {

    @Autowired
    private SessionFactory factory;

    public void persist(T entity) {
        Session session = factory.getCurrentSession();
        session.persist(entity);
    }

    @SuppressWarnings("unchecked")
    public T merge(T entity) {
        Session session = factory.getCurrentSession();
        return (T) session.merge(entity);
    }

    public void saveOrUpdate(T entity) {
        Session session = factory.getCurrentSession();
        session.saveOrUpdate(entity);
    }

    public void delete(T entity) {
        Session session = factory.getCurrentSession();
        session.delete(entity);
    }

}

内容可能有所不同,但总的思想是适用的。

然后,您应该能够通过使用以下命令自动连接控制器和服务类中的DAO:

@Autowired
private GenericDAO<Car> carDao;


 类似资料:
  • 你能用这个网站做个例子吗?我想忽略有评论的帖子,只点击没有评论的帖子。 我试过了,但有一个错误。 我想点击一个还没有任何评论的帖子。我想跳过有评论的帖子。我还是个初学者。救救我。

  • 我有一把刀: 问题是,当我试图使用DAO进行加载调用时,使用DynamoDBMapper以field d1作为哈希键来获取项目,它会抛出一个DynamoDBExc0019,说:为公共DAO. getField2()找到了空键,但实际上表的值对应于field d2。问题,这是因为Lombok注释而不是手动突变代码,还是一般来说我们一起使用Lombok和DynamoDBAnnotions?

  • 5.使用注解编写爬虫 WebMagic支持使用独有的注解风格编写一个爬虫,引入webmagic-extension包即可使用此功能。 在注解模式下,使用一个简单对象加上注解,可以用极少的代码量就完成一个爬虫的编写。对于简单的爬虫,这样写既简单又容易理解,并且管理起来也很方便。这也是WebMagic的一大特色,我戏称它为OEM(Object/Extraction Mapping)。 注解模式的开发方

  • 请让我知道,如何使用带注释的映射器在mybatis中执行批插入/更新。

  • 我发现了几个与此相关的(不是重复的)问题,但它们不能让我满意。 我无法理解在哪里以及为什么要使用? 我在一本书中读到了一个自定义注释的示例,但没有详细解释。 myMeth()内的输出与预期一致。 关于这个例子,我有几个问题。 1-如何在此程序中使用和?或

  • 问题内容: 如何在React组件的方法内部使用注释? 我有以下组成部分: 我的评论显示在用户界面中。 在组件的渲染方法中应用单行和多行注释的正确方法是什么? 问题答案: 因此,在方法内允许使用注释,但为了在JSX中使用它们,必须将它们用大括号括起来并使用多行样式的注释。 您可以在此处阅读有关注释如何在JSX中工作的更多信息