使用Spring Roo从数据库模式生成JPA实体时ActiveRecord和Repository之间的差异?

时间:2014-10-26 19:13:48

标签: jpa activerecord repository spring-roo dbref

由于Spring Roo指导here在架构上执行DBRE,我们使用以下命令生成实体及其相关文件。

我们可以选择参数--activerecord或--repository;选择后者将忽略第一个。

我的问题是两者之间有什么不同?

  

袋鼠> 数据库逆向工程师 --schema DbSchemaName --package~.domain - activeRecord   --repository                                  --service --testAutomatically --enableViews                                  --includeTables --excludeTables                                  --includeNonPortableAttributes                                  --disableVersionFields --disableGeneratedIdentifiers

     

使用 - activeRecord 选项创建“Active Record”实体   (如果未指定,则为默认值。)

     

使用 - repository 选项为其创建Spring Data JPA存储库   每个实体。如果指定为true,则--activeRecord选项为   忽略。

1 个答案:

答案 0 :(得分:5)

Roo在http://docs.spring.io/spring-roo/docs/1.3.1.RC1/reference/html/base-layers.html#d4e1932

谈论这些模式

Active Record Pattern

  • 活动记录模式是一种访问数据的方法 数据库。数据库表或视图包装在一个类中。因此,一个 对象实例绑定到表中的单个行。

  • 示例:持久化新实例(创建新行):

    Part part = new Part();
    part.name = "Sample part";
    part.price = 123.45;
    part.save();
    

Repository pattern

  • 存储库在域和数据映射层之间进行调解,其作用类似于内存中的域对象集合。从概念上讲,存储库封装了持久存储在数据存储中的对象集以及对它们执行的操作,从而提供了更加面向对象的持久层视图。存储库还支持在域和数据映射层之间实现清晰分离和单向依赖的目标。

  • 示例:持久化新实例(创建新行):

    Part part = new Part(); 
    part.name = "Sample part"; 
    part.price = 123.45; 
    
    //RepositoryFactorySupport ;
    factory = ...; // Instantiate factory here or similar PartRepository 
    repository = factory.getRepository(PartRepository.class); 
    repository.save(part);