jpa使用toplink实现。数据表有200多万的记录。 一运行下面的分页查询就出现这个错误:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2931)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2871)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3414)
代码:
public class PagingTest {
EntityManagerFactory emf = null;
private javax.persistence.EntityManager em;
/**
* @param args
*/
public static void main(String[] args) {
PagingTest pTest= new PagingTest();
pTest.testPaging();
}
public void testPaging(){
emf = EntityManagerHelper.getEmf();
em= emf.createEntityManager();
Query rowCountQuery = em.createQuery("SELECT COUNT(c) FROM Customer c"); // NOI18N
int size =((Long) rowCountQuery.getSingleResult()).intValue();
System.out.println(size);
final Query getRowsQuery = em.createQuery("select c from Customer c");
System.out.println("numer of requests to the database " + counter++);
Query query = getRowsQuery.setMaxResults(20).setFirstResult(1000000);//这里如果设置为setFirstResult(100000); 就可以运行。
//add the cache
List <Customer> resultList = query.getResultList();
System.out.println("=====query done " );
for(Customer cust:resultList){
System.out.println("cust:"+cust.getCustomerId()+","+cust.getCustomerName());
}
}
private javax.persistence.EntityManager entityManager1;
private javax.persistence.Query getRowsQuery;
private javax.persistence.Query rowCountQuery;
private List <Customer> getList() {
getRowsQuery = java.beans.Beans.isDesignTime() ? null : entityManager1.createQuery("SELECT c FROM Customer c"); // NOI18N
rowCountQuery = java.beans.Beans.isDesignTime() ? null : entityManager1.createQuery("SELECT COUNT(c) FROM Customer c"); // NOI18N
List <Customer> toReturn = new ResultListJPA <Customer>(rowCountQuery, getRowsQuery);
return toReturn;
}
private int counter=0;
}
请教高手这是什么原因?
分享到:
- 2009-08-31 23:33
- 浏览 983
- 评论(0)
- 论坛回复 / 浏览 (0 / 2117)
- 查看更多
相关推荐
TOPLink JPA的优势在于其高性能和对复杂数据模型的良好支持,同时也能够无缝集成到EclipseLink(Oracle的开源持久化框架)中,提供了广泛的持久化服务。 **2. Hibernate JPA** Hibernate是最早的ORM框架之一,后来...
Oracle Toplink JPA
JPA提供了丰富的注解,使得在Java类上可以直接定义数据存储的相关属性,简化了开发流程。尽管这个资料可能相对较旧,但基础的JPA注解仍然是理解和使用JPA的关键部分。 **1. 主键注解 (@Id)** 在JPA中,@Id注解用于...
TopLink是Oracle公司开发的一个JPA实现,它为Java应用程序提供了强大的数据持久化能力。 在Java EE环境中使用JPA TopLink,你需要包含相关的jar包以支持TopLink作为JPA的提供者。这些jar包通常包含了TopLink的实体...
总的来说,JPA文档中的"学TOPLINK必看"部分,会详细阐述如何配置和使用JPA,如何将TOPLINK的特性与JPA相结合,以及如何通过这些工具解决实际开发中的问题。通过阅读《JPA_Basic.pdf》,你将能够深入了解JPA的基础...
注解是一种简单、表达性强的在Java源代码上添加元数据的方法,这些元数据在编译时会被嵌入到对应的Java类文件中,由TopLink JPA在运行时解释以管理JPA行为。 例如,要将一个Java类标记为JPA实体,可以使用@Entity...
myeclipse_jpa_toplink.swf
需要一个持久化服务,它能够满足OSGi环境的特点,例如需要在OSGi服务注册表中注册数据源服务(JDBC DataSource Service)和JPA提供者服务(JPA Provider Service),以便在OSGi环境下找到相应的持久化单元...
这两个JAR文件属于Oracle TopLink框架,一个功能强大的ORM解决方案,它允许开发者以面向对象的方式操作数据库,极大地简化了数据访问层的开发。 首先,我们来详细了解一下`toplink-api.jar`。这个JAR文件包含了...
3. **事务管理**:TopLink支持JTA(Java Transaction API)和JPA的事务配置,确保数据的一致性和完整性。 4. **缓存机制**:TopLink内置了第二级缓存,可提高数据读取速度,减少对数据库的直接访问。 5. **性能...
**Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的数据,它为开发者提供了一种对象/关系映射(ORM)工具,将数据库操作转换为对Java对象的操作,简化了数据库编程。以下是对JPA的全面...
TopLink,全称为Oracle TopLink,是Oracle公司的一款对象关系映射(ORM)框架,它允许开发者在Java应用程序中通过对象模型来操作数据库,从而降低了数据访问层的复杂性。作为Java持久化解决方案的一部分,TopLink...
在实际的项目开发中,SpringDataJPA能够极大程度上减少我们对于数据访问层代码的编写工作。SpringDataJPA框架作为SpringData的一部分,为我们提供了数据访问的高级特性,并为不同的数据存储技术提供了一致的编程模型...
- **兼容性**: 在使用JPA开发的应用中,仍然会用到如Hibernate这样的ORM框架,但这些应用可以在不修改代码的情况下在任何支持JPA的环境中运行。 - **区别与联系**: JPA规定了标准接口和行为,而实际的实现是由如...
JPA 作为一种标准化的 ORM 规范,极大地简化了 Java 应用程序的数据持久化过程。通过 JPA,开发人员可以专注于业务逻辑而不用担心底层数据库的细节。同时,由于 JPA 的高度灵活性和可移植性,它可以被广泛应用于各种...
随着JPA标准的推广和被广泛采用,越来越多的厂商和框架开始支持JPA,其中包括Spring Framework、OpenJPA、EclipseLink(原TopLink)等。这种广泛的采纳使得JPA成为了一个重要的行业标准,为开发者提供了丰富的资源和...