Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void saveOrUpdate(Object dataHierarchyRoot) {
- final EntityManager entityManager = entityManagerFactory.createEntityManager();
- final EntityTransaction transaction = entityManager.getTransaction();
- try {
- transaction.begin();
- // This single call may result in inserting up to 10K records
- entityManager.merge(dataHierarchyRoot);
- transaction.commit();
- } catch (final Throwable e) {
- // error handling redacted for brevity
- } finally {
- entityManager.close();
- }
- }
- for (Object entity: entities) {
- if(entity.getId() == null) {
- entityManager.persist(entity);
- } else {
- entityManager.merge(entity);
- }
- if ((i % batchSize) == 0) {
- entityManager.getTransaction().commit();
- entityManager.clear();
- entityManager.getTransaction().begin();
- }
- }
- entityManager.getTransaction().commit();
- em.getTransaction().commit();
- <persistence-unit name="pu" transaction-type="RESOURCE_LOCAL">
- <provider>org.hibernate.ejb.HibernatePersistence</provider>
- <properties>
- <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
- <property name="hibernate.connection.username" value="***"/>
- <property name="hibernate.connection.password" value="***"/>
- <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
- <property name="hibernate.connection.url" value="jdbc:oracle:thin:@***"/>
- <property name="hibernate.jdbc.batch_size" value="100"/>
- </properties>
- </persistence-unit>
- Session session = SessionFactory.openSession();
- Transaction tx = session.beginTransaction();
- for ( int i=0; i<100000; i++ ) {
- Employee employee = new Employee(.....);
- session.save(employee);
- }
- tx.commit();
- session.close();
Add Comment
Please, Sign In to add comment