Hibernate性能调整

Hibernate性能调整,hibernate,performance,Hibernate,Performance,我有大约1000个不同的id,我需要多次运行下面的hibernate查询。根据检索到的记录(记录不需要存在),我在将其输入另一个表之前进行了一些处理 这里的问题是检索记录的整个过程大约需要20-25秒。这正常吗?可以进一步调整查询以缩短时间吗 (将对每个id执行下面的hibernate查询) 注:Employee是一个大约有30列的表。status_cd和id是VARCHAR。首先,不要使用字符串连接来设置SQL中的变量字段 String queryString = "select emp fr

我有大约1000个不同的id,我需要多次运行下面的hibernate查询。根据检索到的记录(记录不需要存在),我在将其输入另一个表之前进行了一些处理

这里的问题是检索记录的整个过程大约需要20-25秒。这正常吗?可以进一步调整查询以缩短时间吗

(将对每个id执行下面的hibernate查询)


注:Employee是一个大约有30列的表。status_cd和id是VARCHAR。

首先,不要使用字符串连接来设置SQL中的变量字段

String queryString = "select emp from Employee emp where emp.id = :id and emp.status.statusCd = 'A'";
Query query = Session.createQuery(queryString);
query.setInteger("id", 168);
其次,您可以尝试通过一个查询获取所有目标记录:

String queryString=“从Employee emp中选择emp,其中emp.id在(:id)中,emp.status.statusCd='A';
Query=Session.createQuery(queryString);
Collection idList=new ArrayList();
query.setParameterList(“id”,idList);
然后,您将迭代这个查询的结果,并像之前处理记录一样处理每个记录


第三,如果您在处理每个单独记录时执行额外的SQL,那么您还应该收集它们并在一个数据库中执行它们

首先,不要使用字符串连接来设置SQL中的变量字段

String queryString = "select emp from Employee emp where emp.id = :id and emp.status.statusCd = 'A'";
Query query = Session.createQuery(queryString);
query.setInteger("id", 168);
其次,您可以尝试通过一个查询获取所有目标记录:

String queryString=“从Employee emp中选择emp,其中emp.id在(:id)中,emp.status.statusCd='A';
Query=Session.createQuery(queryString);
Collection idList=new ArrayList();
query.setParameterList(“id”,idList);
然后,您将迭代这个查询的结果,并像之前处理记录一样处理每个记录


第三,如果您在处理每个单独记录时执行额外的SQL,那么您还应该收集它们并在一个数据库中执行它们

不要将参数连接到查询中,这是一个等待发生的sql注入>\u@NathanHughes我已经处理好了;-)不要将参数连接到查询中,这是一个等待发生的sql注入>\u@NathanHughes我已经处理好了;-)+1介绍setParameterList方法!我曾经自己做过一个参数列表+1介绍setParameterList方法!我曾经自己做过一个参数列表!
String queryString = "select emp from Employee emp where emp.id in (:id) and emp.status.statusCd = 'A'";
Query query = Session.createQuery(queryString);
Collection<Integer> idList = new ArrayList<Integer>();
query.setParameterList("id", idList);