@Override public <E extends T> Iterable<E> upsert(Iterable<E> entities) { try (TransactionScope transaction = new TransactionScope(transactionProvider)) { for (E entity : entities) { upsert(entity); } transaction.commit(); } return entities; }
@Override public <E extends T> Void delete(E entity) { try (TransactionScope transaction = new TransactionScope(transactionProvider)) { EntityProxy<E> proxy = context.proxyOf(entity, true); synchronized (proxy.syncObject()) { context.write(proxy.type().getClassType()).delete(entity, proxy); transaction.commit(); } } return null; }
@Override public <E extends T> E upsert(E entity) { try (TransactionScope transaction = new TransactionScope(transactionProvider)) { EntityProxy<E> proxy = context.proxyOf(entity, true); synchronized (proxy.syncObject()) { EntityWriter<E, T> writer = context.write(proxy.type().getClassType()); writer.upsert(entity, proxy); transaction.commit(); return entity; } } }
@Override public void deleteFinancialSource(FinancialSource source) { if (source == null) throw new IllegalArgumentException("Argument 'source' must not be null."); TransactionScope transactionScope = this.beginTransaction(); try { this.getSession().getEntityManager().remove(source); transactionScope.commit(); } finally { transactionScope.dispose(); } }
@Override public void deletePayment(Payment payment) { if (payment == null) throw new IllegalArgumentException("Argument 'payment' must not be null."); TransactionScope transactionScope = this.beginTransaction(); try { this.getSession().getEntityManager().remove(payment); transactionScope.commit(); } finally { transactionScope.dispose(); } }
@Override public <E extends T> Void delete(Iterable<E> entities) { Iterator<E> iterator = entities.iterator(); if (iterator.hasNext()) { try (TransactionScope transaction = new TransactionScope(transactionProvider)) { E entity = iterator.next(); EntityProxy<E> proxy = context.proxyOf(entity, false); EntityWriter<E, T> writer = context.write(proxy.type().getClassType()); writer.delete(entities); transaction.commit(); } } return null; }
@SuppressWarnings("unchecked") @Override public <E extends T> E update(E entity, Attribute<?, ?>... attributes) { try (TransactionScope transaction = new TransactionScope(transactionProvider)) { EntityProxy<E> proxy = context.proxyOf(entity, true); synchronized (proxy.syncObject()) { context .write(proxy.type().getClassType()) .update(entity, proxy, (Attribute<E, ?>[]) attributes); transaction.commit(); return entity; } } }
@Override public void persistFinancialSource(FinancialSource source) { EntityManager entityManager = this.getSession().getEntityManager(); TransactionScope transactionScope = this.beginTransaction(); try { entityManager.persist(source); markAsChanged(source); transactionScope.commit(); } finally { transactionScope.dispose(); } }
@Override public <K, E extends T> Iterable<K> insert(Iterable<E> entities, @Nullable Class<K> keyClass) { Iterator<E> iterator = entities.iterator(); if (iterator.hasNext()) { try (TransactionScope transaction = new TransactionScope(transactionProvider)) { E entity = iterator.next(); EntityProxy<E> proxy = context.proxyOf(entity, true); EntityWriter<E, T> writer = context.write(proxy.type().getClassType()); GeneratedKeys<E> keys = writer.batchInsert(entities, keyClass != null); transaction.commit(); @SuppressWarnings("unchecked") Iterable<K> result = (Iterable<K>) keys; return result; } } return null; }
@Override public void persistPayment(Payment payment) { if (payment == null) throw new IllegalArgumentException("Argument 'payment' must not be null."); EntityManager entityManager = this.getSession().getEntityManager(); TransactionScope transactionScope = this.beginTransaction(); try { entityManager.persist(payment); markAsChanged(payment); transactionScope.commit(); } finally { transactionScope.dispose(); } }
@Override public void deleteFinancialSource(int id) { EntityManager entityManager = this.getSession().getEntityManager(); TransactionScope transactionScope = this.beginTransaction(); try { entityManager .createQuery("DELETE FROM FinancialSource fs WHERE fs.id :finId") .setParameter("finId", id) .executeUpdate(); transactionScope.commit(); } catch (PersistenceException ex) { throw TransactionHelper.translateException(ex); } finally { transactionScope.dispose(); } }
@Override public <K, E extends T> K insert(E entity, @Nullable Class<K> keyClass) { try (TransactionScope transaction = new TransactionScope(transactionProvider)) { EntityProxy<E> proxy = context.proxyOf(entity, true); synchronized (proxy.syncObject()) { EntityWriter<E, T> writer = context.write(proxy.type().getClassType()); GeneratedKeys<E> key = null; if (keyClass != null) { key = new GeneratedKeys<>(proxy.type().isImmutable() ? null : proxy); } writer.insert(entity, proxy, key); transaction.commit(); if (key != null && key.size() > 0) { return keyClass.cast(key.get(0)); } } } return null; }