/** * 核心代碼 */ @PersistenceContext protected EntityManager em; @Transactional public void batchInsert(List listA) { int size = listA.size(); for (int i = 0; i < size; i++) { em.persist(list.get(i)); if (i % 10 == 0) { em.flush(); em.clear(); } } } @Transactional public void batchUpdate(List listB) { int size = listB.size(); for (int i = 0; i < size; i++) { em.merge(list.get(i)); if (i % 10 == 0) { em.flush(); em.clear(); } } }
其實就是insert 或 update N條語句,一次commit。
em.flush();
語句在起作用,將緩存的數據固化到數據庫。