Java Hibernate Dao类太慢了

Java Hibernate Dao类太慢了,java,performance,hibernate,dao,Java,Performance,Hibernate,Dao,在我的restful应用程序中,我注意到dao类速度存在问题。对于选定的大约10条小记录,每个呼叫事务大约需要0.12-0.18秒。但是我需要在一个请求中多次调用不同的dao类 public class ShellDao { public ShellDao(){} public List<Object[]> getBackgroundImages() { long startTime = System.nanoTime(); Session session =

在我的restful应用程序中,我注意到dao类速度存在问题。对于选定的大约10条小记录,每个呼叫事务大约需要0.12-0.18秒。但是我需要在一个请求中多次调用不同的dao类

public class ShellDao {

public ShellDao(){}

public List<Object[]> getBackgroundImages() {

    long startTime = System.nanoTime();
    Session session = null;
    Transaction tx = null;

    try {
        session = HibernateAnnotationUtil.getSessionFactory().openSession();
        tx = session.beginTransaction();

        String hql = "SELECT1";
        Query query = session.createSQLQuery(hql);
        List<Object[]> result = query.list();
        tx.commit();
        if (result.size() != 0) {
            return result;
        } else {
            return null;
        }

    } catch (Exception e) {
        try {
            tx.rollback();
        } catch (RuntimeException rbe) {
            rbe.printStackTrace();
        }
        e.printStackTrace();
        return null;
    } finally {
        if (session != null) {
            session.close();
            long stopTime = System.nanoTime();
            Double time = (stopTime-startTime)/ 1000000000.0;
            System.out.println(time);
        }
    }
}
公共类ShellDao{
公共ShellDao(){}
公共列表getBackgroundImages(){
long startTime=System.nanoTime();
会话=空;
事务tx=null;
试一试{
session=HibernateAnnotationUtil.getSessionFactory().openSession();
tx=session.beginTransaction();
字符串hql=“SELECT1”;
Query=session.createSQLQuery(hql);
列表结果=query.List();
tx.commit();
如果(result.size()!=0){
返回结果;
}否则{
返回null;
}
}捕获(例外e){
试一试{
tx.回滚();
}捕获(运行时异常rbe){
rbe.printStackTrace();
}
e、 printStackTrace();
返回null;
}最后{
if(会话!=null){
session.close();
长停止时间=System.nanoTime();
双时间=(停止时间开始时间)/100000000.0;
系统输出打印LN(时间);
}
}
}

是否有任何方法可以避免每次调用beginTransaction?因为它需要大约0.062275091秒。

sql执行的网络延迟有多大?如果直接从DB控制台运行查询需要多少时间?延迟大约为21-25ms我无法通过ssh连接DB server,还有其他方法可以检查服务器上的查询时间吗side?您是否使用连接池?那不是您真正的查询,是吗?您真正的查询是什么?sql执行的网络延迟有多大?如果直接从DB控制台运行查询,需要多少时间?延迟大约为21-25ms我无法通过ssh与DB服务器连接,还有其他方法可以检查查询时间吗服务器端?你使用连接池吗?那不是你真正的查询,是吗?你真正的查询是什么?