2016-09-30 7 views
0

コードテーブルから国のリストを取得するCodeServiceを実装しました。Java Coupling - 異なるモジュール間でサービスまたはリポジトリレイヤーに依存する必要がありますか?

私のShippingServiceでは、注文が特定の国に出荷されているかどうか確認したいと思います。

この場合、CodeServiceまたはCodeDAOを使用して国のリストを取得する必要がありますか。

public interface CodeService { 
    public List<String> getCountryList(); 
} 


@Service 
public class CodeServiceImpl implements CodeService { 

    @Autowired 
    CodeDAO codeDao 

    public List<String> getCountryList() { 
     return codeDao.getCountryList();  
    } 
} 


@Service 
public class ShippingServiceImpl implements ShippingService { 

    @Autowired 
    CodeDAO codeDao; 

    @Autowired 
    CodeSevice codeService; 


    public void addOrder(Order order) { 

    List<String> countries = codeService.getCountryList(); 
    //List<String> countries = codeDao.getCountryList();  

    } 
} 
+0

アクセスデータが必要なときはいつでも、独自のDAOを作成するよりもJPAを使用する方が良いです。 –

答えて

1

このような追加のロジックがない場合は、DAOに直接呼び出すのが最善だと思います。

長所:常にサービスを呼び出すと、アプリケーションコードから完全にDAOレイヤーを分離することができます。 短所:各DAOに2つの冗長クラスを作成します。これは、呼び出しをDAOに委任するだけです。

フェッチされたデータに対するビジネスロジックにサービスレイヤを使用する必要があります。たとえば、フェッチされた国に権限を追加する場合。

将来的に追加のロジックが追加される場合は、リファクタリングを行い、サービスを作成することをお勧めします。

+0

この場合、getCountryList()メソッドを必要とする任意のServiceクラスには、CodeDAOは表示されませんか? – youcanlearnanything

+0

実際には、サービスを代わりに使用する場合も同じです。 – aviad

関連する問題