我正在使用帶有buildin OpenJPA 1.2.3和Oracle數據庫的Websphere Application Server 7。我有以下實體:性能OpenJPA查詢(3000+記錄)很慢
@NamedNativeQuery(name=Contract.GIVE_ALL_CONTRACTS,
query="SELECT number, name \n" +
"FROM contracts \n" +
"WHERE startdate <= ?1 \n" +
"AND enddate > ?1",
resultSetMapping = Contract.GIVE_ALL_CONTRACTS_MAPPING)
@SqlResultSetMapping(name = Contract.GIVE_ALL_CONTRACTS_MAPPING,
entities = { @EntityResult(entityClass = Contract.class, fields = {
@FieldResult(name = "number", column = "number"),
@FieldResult(name = "name", column = "name")
})
})
@Entity
public class Contract {
public static final String GIVE_ALL_CONTRACTS = "Contract.giveAllContracts";
public static final String GIVE_ALL_CONTRACTS_MAPPING = "Contract.giveAllContractsMapping";
@Id
private Integer number;
private String name;
public Integer getNumber() {
return number;
}
public String getName() {
return name;
}
}
以下代碼來獲取合同:
Query query = entityManager.createNamedQuery(Contract.GIVE_ALL_CONTRACTS);
query.setParameter(1, referenceDate);
List contracts = query.getResultList();
entityManager.clear();
return contracts;
檢索到的合同被傳遞到web服務。
在Oracle開發人員中執行此查詢需要大約0.35秒的3608記錄。 對query.getResultList()的調用大約需要4秒鐘。
在實體的構造函數中使用記錄器時,它會記錄約10-20個使用相同時間戳創建的實體。然後0,015秒它做別的事情。我猜OpenJPA的東西。
有沒有辦法加快OpenJPA?或者是唯一的解決方案緩存?
我建議你使用分析器。 – user1516873