0

我正在使用 Spring-Data-JPA 并且在我的持久层中使用两个存储库来访问数据库,然后有时使用 1)其中包含存储库的服务类,然后自动装配服务 2)直接自动装配存储库

两种方法的行为方式是否相同?直接使用存储库与在服务中使用存储库有什么区别?

存储库:

package  com.me.repository;

import com.me.myentities.MyEntity;
import org.springframework.data.jpa.repository.JpaRepository;


public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
}

服务:

package  com.me.service;
import   com.me.entities.*;

import org.springframework.stereotype.Service;
import  com.me.repository.*;
import javax.annotation.Resource;

@Service
public class MyService {

@Resource
private MyEntityRepository myEntityRepository ;

public void update(MyEntity myEntity)
{
    myEntityRepository.save(myEntity);
}
}
4

1 回答 1

1

无论哪种方式,您都在使用同一种具体的 Repository 对象,该对象是在容器加载时由 Spring 创建的。而且,如果您对范围不做任何事情,那么您正在使用对完全相同的对象的引用。

这些方法是否以相同的方式工作?如果服务只对委托存储库进行传递调用,那么它不会导致任何不同的最终行为。如果这种传递行为是服务所做的全部,那么它没有存在的内在理由。

Spring Data JPA 提供了标准方法来将自定义行为添加到存储库,或者将存储库的行为限制为一组较小的方法。Spring Data JPA 文档(虽然简短)提供了这些技术的演示。

最终结果是相同的,但通常您会发现直接使用存储库更简洁。

于 2013-11-28T19:12:18.413 回答