Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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 SpringRoo模式与存储库模式_Java_Spring_Design Patterns_Persistence_Spring Roo - Fatal编程技术网

Java SpringRoo模式与存储库模式

Java SpringRoo模式与存储库模式,java,spring,design-patterns,persistence,spring-roo,Java,Spring,Design Patterns,Persistence,Spring Roo,我正在为我的一个项目使用SpringRoo。SpringRoo所做的是向现有类添加持久性方法。例如,可以调用Person.persist在数据库中保存Person类型的对象 我最近看到了另一种模式。下面是代码 @Entity public class Customer { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String firstName;

我正在为我的一个项目使用SpringRoo。SpringRoo所做的是向现有类添加持久性方法。例如,可以调用Person.persist在数据库中保存Person类型的对象

我最近看到了另一种模式。下面是代码

@Entity
public class Customer {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    private String firstName;
    private String lastName;

    protected Customer() {}

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

}

@Repository
public class CustomerRepository {
    @PersistenceContext
    private EntityManager em;

    @Transactional
    public void save(Customer c) {
        em.persist(c);
    }
}

@Controller
public class HomeController {

    @Autowired
    CustomerRepository customerRepository;

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

    /**
     * Simply selects the home view to render by returning its name.
     * @throws Exception 
     */
    @Transactional
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home controller! The client locale is {}.", locale);
        Customer c = new Customer("XXX", "YYY");
        customerRepository.save(c);
        return "home";
    }
}

每种方法的优点和缺点是什么?

我希望你的最后一个问题更多地是关于这两种方法的优点或缺点,因为否则答案可能是自以为是的。google activerecord与repository相比,如果您更喜欢repository模式,也可以将其用于Roo:请参阅10.2.2 docs.spring.io/spring-Roo/reference/html/base-layers.htmlRoo项目中关于数据访问模式的讨论: