Websphere Application Server 7을 buildin OpenJPA 1.2.3 및 Oracle 데이터베이스와 함께 사용하고 있습니다. 계약을 검색 할 수성능 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;
검색된 계약은 웹 서비스에 전달 나는 다음과 같은 개체가 있습니다.
Oracle 개발자에서이 쿼리를 실행하면 3608 개의 레코드가 0.35 초 걸립니다. query.getResultList() 호출에 약 4 초가 걸립니다.
엔티티 구성자의 로그 작성자는 동일한 타임 스탬프로 생성 된 약 10-20 개의 엔티티가 기록됩니다. 그러면 0,015 초가 걸립니다. 나는 OpenJPA 물건을 추측한다.
OpenJPA의 속도를 높일 방법이 있습니까? 아니면 유일한 솔루션 캐싱입니까?
프로필러를 사용하는 것이 좋습니다. – user1516873