Spring MVC:与数据库交谈的正确位置

时间:2014-12-24 17:07:49

标签: java spring spring-mvc spring-data spring-boot

使用一些Spring Boot教程,这些教程让我了解一些像Spring-Data这样的Spring项目。 这是一个控制器方法,它获取客户数据,将其保存到数据库,然后将所有已保存的客户返回到列表中:

@RequestMapping(value="/customer", method=RequestMethod.POST)
    public String submitCustomer(@ModelAttribute Customer customer, Model model) {
        System.out.println("First name is "+customer.getFirstName());
        repository.save(customer);
        List<Customer> customers = repository.findAll();
        System.out.println("Length is "+customers.size());
        model.addAttribute("customers", customers);
        return "result";
    }

我不确定在控制器类中调用repository

  • 我应该将其移至Customer bean并使用customer.save()customer.getAll()吗?
  • 我应该创建一个与数据库对话的CustomerDAO类吗?

2 个答案:

答案 0 :(得分:4)

直接从控制器调用Repository很好。你可能做的是创建service layer,它将使用存储库与数据库通信,以执行一些复杂的操作。

这种复杂的操作可以是例如保存对客户的编辑,同时还创建审计日志条目并更新与客户关联的一些实体。像这样的动作通常应该是原子的,因此服务层通常是应用事务控制逻辑的地方。

  

我应该创建一个与数据库通信的CustomerDAO类吗?

在此上下文中,存储库代表DAO或数据访问对象,因此没有。

答案 1 :(得分:0)

您最好在Apache Maven中创建一个包含所有DAO的模块。 DAO是与数据库通信的最佳方法。 save()和getAll()应该包含在DAO中。实现DAO后,应该在submitCustomer()类中注入DAO。