Sql Hibernate Criteria.list()对于一个非常简单的查询需要很长时间
我正在关注的一个应用程序有一段代码,执行起来需要大约20000毫秒。这确实妨碍了网站的性能。这是因为Criteria.list吗?这是导致速度缓慢的代码。我有一个示例DB表,试图在其中检索表中的所有值。如何提高此查询的性能?我正在使用SQL server作为我的数据库Sql Hibernate Criteria.list()对于一个非常简单的查询需要很长时间,sql,performance,hibernate,hibernate-criteria,Sql,Performance,Hibernate,Hibernate Criteria,我正在关注的一个应用程序有一段代码,执行起来需要大约20000毫秒。这确实妨碍了网站的性能。这是因为Criteria.list吗?这是导致速度缓慢的代码。我有一个示例DB表,试图在其中检索表中的所有值。如何提高此查询的性能?我正在使用SQL server作为我的数据库 public Map<Integer, Sample> getAllSamples() { Map<Integer, Sample> Sample = transactionTemplate
public Map<Integer, Sample> getAllSamples() {
Map<Integer, Sample> Sample = transactionTemplate
.execute(new TransactionCallback<Map<Integer, Sample>>() {
@Override
public Map<Integer, Sample> doInTransaction(TransactionStatus arg0) {
Criteria criteria = hibernateTemplate
.getSessionFactory().getCurrentSession()
.createCriteria(Sample.class);
criteria.add(Restrictions.isNull("deleted"));
@SuppressWarnings("unchecked")
List<Sample> Samples = (List<Sample>) criteria.list();
HashMap<Integer, Sample> mSamples = new HashMap<Integer, Sample>();
for (Sample sample: Samples){
if (sample != null && sample.getsampleId() != null){
//hibernateTemplate.initialize(sample);
mSamples.put(sample.getsampleId(), sample);
hibernateTemplate.initialize(sample.getsampleCountry());
}
}
return mSamples;
}
});
return Sample;
}
我检查了日志,对于示例中的每一行,都会在Deposit中生成一个查询。我如何确保情况并非如此?因为样本中大约有400行;要检索存款,需要运行400个查询。这很奇怪。我不确定在这里可以做些什么来提高性能。任何指点都会有很大的帮助
提前谢谢。我就是这么做的。我将关联设置为强制(可选=false),它相信对于每个样本记录,都会有一个存款记录。因此,在加载样本时,Hibernate也不会加载存款表 这是底层代码
@OneToOne(optional = false, fetch = FetchType.LAZY, mappedBy = "sample", cascade = CascadeType.ALL)
public deposit getDeposit() {
return this.deposit;
}
这就是我所做的。我将关联设置为强制(可选=false),它相信对于每个样本记录,都会有一个存款记录。因此,在加载样本时,Hibernate也不会加载存款表 这是底层代码
@OneToOne(optional = false, fetch = FetchType.LAZY, mappedBy = "sample", cascade = CascadeType.ALL)
public deposit getDeposit() {
return this.deposit;
}
只需使用即时抓取只需使用即时抓取