2016-04-15 4 views
1

JavaまたはHibernateを使用して特定のクエリのタイムアウトを設定する方法。私が直面している問題は、大量のデータを何度か取得しなければならないクエリの中には、応答時間の長いアプリケーションに応答しないものがあるということです。クエリに基づいてタイムアウトを設定する

答えて

1

HibernateのクエリはsetTimeout()方法

Query query = session.createQuery(someQueryString); 
query.setTimeout(theTimeOut); 
0

を持っているHibernateはトランザクションタイムアウトをサポートしています。

//set transaction timeout to 5 seconds at session 
    Session sess = factory.openSession(); 
    sess.getTransaction().setTimeout(5); 

のことができます。また、query levelでセットアップ。

Query q = sess.createQuery("from....") 
      .setTimeOut(3); 
1

JPA 標準javax.persistence.query.timeoutは、各クエリに「ヒント」として提供することができます。

query.setHint("javax.persistence.query.timeout", someTimeout); 

したがって、コードを1つのJPAプロバイダまたは他のJPAプロバイダに割り当てるのは避けてください。