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);
            }
        }
  • 相关阅读:
    C C++ 数字后面加 LL是什么意思
    stdio.h cstdio的区别
    printf scanf cin cout的区别与特征
    PAT Basic 1020
    PAT Basic 1012
    PAT Basic 1046
    PAT Basic 1026
    PAT Basic 1011
    PAT Basic 1016
    PAT Basic 1009
  • 原文地址:https://www.cnblogs.com/fswhq/p/jpa.html
Copyright © 2011-2022 走看看