Java SpringRoo模式与存储库模式
我正在为我的一个项目使用SpringRoo。SpringRoo所做的是向现有类添加持久性方法。例如,可以调用Person.persist在数据库中保存Person类型的对象 我最近看到了另一种模式。下面是代码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;
@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项目中关于数据访问模式的讨论: