0

私のプロジェクトでは、Spring 3.2 と Hibernate 4 を使用しています。テーブルをクエリすると、「現在のスレッドのセッションが見つかりません」というメッセージが表示されます。@Transactional アノテーションを使用しようとしましたが (成功しました)、すべてのサービス実装に @Transactional を配置したくありません。

別の方法はありますか?

つまり、「@Transaction を使用せずに単純な「挿入」操作を行うにはどうすればよいですか?」

どうも...

4

2 に答える 2

2

DAO メソッドを使用しないでください。@Transactional実際、DAO メソッドに直接アクセスしてはいけません。. @Serviceサービスは操作を実行するために 0 個以上の DAO クラスを使用し、すべての操作が完了した後にのみトランザクションがコミットされます。

@Repository
public class CustomerDao() {
    // dao methods here, they are not transactional but will be run within a sevice transaction
}

@Service
@Transactional
public class CustomerService() {

   private final CustomerDao customerDao;

   @Autowired
   public CustomerService(CustomerDao customerDao) {
       this.customerDao = customerDao;
   }

   //service methods here (they are all transactional because we have annotated the class)
}
于 2013-07-11T12:46:36.957 に答える