2013-11-20 44 views
0

我正在使用Spring-Data-JPA並在我的持久層中使用兩個存儲庫訪問數據庫,然後有時使用 1)服務然後自動裝載服務 2)直接自動裝配存儲庫Spring-Data:自動裝配@Service和直接自動裝入存儲庫有什麼區別

這兩種方法的行爲方式是否相同?直接使用存儲庫與從服務中使用存儲庫有什麼區別?

庫:

package com.me.repository; 

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


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

服務:

你的同種具體Repository對象的,這是春天,當容器加載創建工作
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); 
} 
} 

回答

1

無論哪種方式。如果你沒有對範圍進行任何操作,那麼你正在參考完全相同的對象。

不要做的途徑相同的方式工作?如果服務不只是做一個直通調用委託庫,那麼它不會導致任何不同的終端行爲。如果這直通的行爲是所有服務做,它並沒有對現有的內在原因。

春數據JPA提供了標準的方法來添加自定義行爲的信息庫,或限制該庫的行爲,以較小的一套方法。 Spring Data JPA文檔(儘管簡要)提供了這些技術的示例。

最終的結果是相同的,但通常你會發現直接用庫更簡潔的工作。