登録・更新系のSQLをServiceクラスに書くのはいいとして
まずこちらはDaoに書きましょう。
トランザクション制御が必要ない検索系のSQLは、
controllerから直接Daoを呼ぶべきでしょうか。それとも、すべてServiceを介して利用するべきでしょうか。
Springを利用するのであれば、後者の**「すべてServiceを介して利用する」を推奨**します。
Spring自体も宣言的なトランザクションを推奨しているので以下のようにServiceの実装クラスで@Transactional(readOnly = true)
を宣言すればフレームワークによって最適化が行われます。
Java
1 @Transactional(readOnly = true)
2 public List<Product> findAllProducts() {
3 return this.productDao.findAllProducts();
4 }
#####補足
Springでレイヤを意識した実装をされるのであればControllerはルーティング(リクエストマッピングと遷移先Viewの返却)に徹し主処理はServiceに委譲されることをおすすめします。