zoukankan      html  css  js  c++  java
  • jpa batch批量操作save和persist比较

    1.网上最常见的JPA----entityManager批量操作方法

        private EntityManager em;
        @PersistenceContext(name = "EntityManagerFactory")
        public void SetEntityManager(EntityManager em) {
            this.em = em;
        }
        @Transactional
        public void saveBatch(List<CustomerEntity> list) {
            for (int i = 0; i < 10000; i++) {
                em.persist(list.get(i));
                if (i % 1000 == 0) {
                    em.flush();
                    em.clear();
                }
            }
        }

    2.Jpa--Repository批量写入

        @Transactional
        public void saveBatchJpa(List<CustomerEntity> list) {
            repository.save(list);
        }

    3.结论

    EM和JPA直接操作集合没有太大的性能区别,直接使用JPA操作集合即可。如下是JPA操作集合的代码,可以看出起始内部也是用的em

      @Transactional
        public <S extends T> List<S> save(Iterable<S> entities) {
            List<S> result = new ArrayList<S>();
            if (entities == null) {
                return result;
            }
            for (S entity : entities) {
                result.add(save(entity));
            }
            return result;
        }
    /*
         * (non-Javadoc)
         * @see org.springframework.data.repository.CrudRepository#save(java.lang.Object)
         */
        @Transactional
        public <S extends T> S save(S entity) {
            if (entityInformation.isNew(entity)) {
                em.persist(entity);
                return entity;
            } else {
                return em.merge(entity);
            }
        }
  • 相关阅读:
    文件下载并删除
    程序输出
    什么是并发
    跨站脚本攻击为什么要过滤危险字符串
    正则表达式——极速入门
    输出的为X= 1 ,Y = 0;
    Eclipse+MyEclipse安装及环境配置
    J2EE有三个开发环境级。
    TCP和UDP的区别
    asp.net2.0导出pdf文件完美解决方案(转载)
  • 原文地址:https://www.cnblogs.com/fswhq/p/jpa.html
Copyright © 2011-2022 走看看