/** * 核心代码 */ @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();
语句在起作用,将缓存的数据固化到数据库。