मैं WebSphere अनुप्रयोग सर्वर 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;
लिया गया अनुबंध एक वेब सेवा करने के लिए पारित कर रहे हैं मैं निम्नलिखित इकाई है।
निष्पादित ओरेकल डेवलपर में इस क्वेरी 3608 के रिकॉर्ड के लिए चारों ओर 0,35 सेकंड लेता है। query.getResultList() में कॉल करने के लिए लगभग 4 सेकंड लगते हैं।
संस्था की constuctor में एक लकड़हारा के साथ, यह लॉग 10-20 के बारे में वही टाइमस्टैम्प के साथ बनाई गई संस्थाओं देखते हैं कि। फिर 0,015 सेकंड यह कुछ और करता है। मुझे ओपनजेपीए सामान लगता है।
वहाँ OpenJPA तेजी लाने के लिए कोई तरीका है? या एकमात्र समाधान कैशिंग है?
मैं आपको प्रोफाइलर का उपयोग करने का सुझाव देता हूं। – user1516873