`
surroad
  • 浏览: 983 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

大数据量下的toplink JPA分页问题。

阅读更多
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;
  
}

请教高手这是什么原因?
分享到:
评论

相关推荐

    JPA教程,包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

    TOPLink JPA的优势在于其高性能和对复杂数据模型的良好支持,同时也能够无缝集成到EclipseLink(Oracle的开源持久化框架)中,提供了广泛的持久化服务。 **2. Hibernate JPA** Hibernate是最早的ORM框架之一,后来...

    Oracle Toplink JPA

    Oracle Toplink JPA

    Toplink_JPA注解参考

    JPA提供了丰富的注解,使得在Java类上可以直接定义数据存储的相关属性,简化了开发流程。尽管这个资料可能相对较旧,但基础的JPA注解仍然是理解和使用JPA的关键部分。 **1. 主键注解 (@Id)** 在JPA中,@Id注解用于...

    jpa toplink相关jar包,完整版。

    TopLink是Oracle公司开发的一个JPA实现,它为Java应用程序提供了强大的数据持久化能力。 在Java EE环境中使用JPA TopLink,你需要包含相关的jar包以支持TopLink作为JPA的提供者。这些jar包通常包含了TopLink的实体...

    JPA文档_学TOPLINK必看_PDF格式

    总的来说,JPA文档中的"学TOPLINK必看"部分,会详细阐述如何配置和使用JPA,如何将TOPLINK的特性与JPA相结合,以及如何通过这些工具解决实际开发中的问题。通过阅读《JPA_Basic.pdf》,你将能够深入了解JPA的基础...

    JPA 标注 JPA标签手册

    注解是一种简单、表达性强的在Java源代码上添加元数据的方法,这些元数据在编译时会被嵌入到对应的Java类文件中,由TopLink JPA在运行时解释以管理JPA行为。 例如,要将一个Java类标记为JPA实体,可以使用@Entity...

    myeclipse_jpa_toplink.swf

    myeclipse_jpa_toplink.swf

    Gemini JPA 介绍资料

    需要一个持久化服务,它能够满足OSGi环境的特点,例如需要在OSGi服务注册表中注册数据源服务(JDBC DataSource Service)和JPA提供者服务(JPA Provider Service),以便在OSGi环境下找到相应的持久化单元...

    toplink-api.jar,toplink-essentials.jar

    这两个JAR文件属于Oracle TopLink框架,一个功能强大的ORM解决方案,它允许开发者以面向对象的方式操作数据库,极大地简化了数据访问层的开发。 首先,我们来详细了解一下`toplink-api.jar`。这个JAR文件包含了...

    oracle toplink lib

    3. **事务管理**:TopLink支持JTA(Java Transaction API)和JPA的事务配置,确保数据的一致性和完整性。 4. **缓存机制**:TopLink内置了第二级缓存,可提高数据读取速度,减少对数据库的直接访问。 5. **性能...

    jpa 全面学习资料

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的数据,它为开发者提供了一种对象/关系映射(ORM)工具,将数据库操作转换为对Java对象的操作,简化了数据库编程。以下是对JPA的全面...

    TopLink 教程

    TopLink,全称为Oracle TopLink,是Oracle公司的一款对象关系映射(ORM)框架,它允许开发者在Java应用程序中通过对象模型来操作数据库,从而降低了数据访问层的复杂性。作为Java持久化解决方案的一部分,TopLink...

    springdatajpa.pdf

    在实际的项目开发中,SpringDataJPA能够极大程度上减少我们对于数据访问层代码的编写工作。SpringDataJPA框架作为SpringData的一部分,为我们提供了数据访问的高级特性,并为不同的数据存储技术提供了一致的编程模型...

    JPA学习文档笔记

    - **兼容性**: 在使用JPA开发的应用中,仍然会用到如Hibernate这样的ORM框架,但这些应用可以在不修改代码的情况下在任何支持JPA的环境中运行。 - **区别与联系**: JPA规定了标准接口和行为,而实际的实现是由如...

    尚硅谷 jpa

    JPA 作为一种标准化的 ORM 规范,极大地简化了 Java 应用程序的数据持久化过程。通过 JPA,开发人员可以专注于业务逻辑而不用担心底层数据库的细节。同时,由于 JPA 的高度灵活性和可移植性,它可以被广泛应用于各种...

    JPA和Hibernate的关系

    随着JPA标准的推广和被广泛采用,越来越多的厂商和框架开始支持JPA,其中包括Spring Framework、OpenJPA、EclipseLink(原TopLink)等。这种广泛的采纳使得JPA成为了一个重要的行业标准,为开发者提供了丰富的资源和...

Global site tag (gtag.js) - Google Analytics