@Override public Object invoke(MethodInvocation invocation) throws Throwable { if (null == didWeStartWork.get()) { unitOfWork.begin(); didWeStartWork.set(Boolean.TRUE); } else { // If unit of work already started we don't do anything here... // another UnitOfWorkInterceptor point point will take care... // This happens if you are nesting your calls. return invocation.proceed(); } try { return invocation.proceed(); } finally { if (null != didWeStartWork.get()) { didWeStartWork.remove(); unitOfWork.end(); } } }
public static EntityManager getEnityManager() { try { beginUnitOfWork(); return entityManagerProvider.get(); } finally { unitOfWork.end(); } }
@Override public void doFilter( final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { unitOfWork.begin(); try { filterChain.doFilter(servletRequest, servletResponse); } finally { unitOfWork.end(); } } }
@Override public void doFilter( final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { unitOfWork.begin(); try { filterChain.doFilter(servletRequest, servletResponse); } finally { unitOfWork.end(); } } }
public static <T> T find(Class<T> resultType, UUID id) { try { beginUnitOfWork(); T result = em().find(resultType, id); return result; } finally { unitOfWork.end(); } }
@Override public void createAll(Collection<? extends T> entities) throws TckRepositoryException { uow.begin(); final EntityManager manager = managerProvider.get(); try { manager.getTransaction().begin(); for (T entity : entities) { manager.persist(entity); manager.flush(); } manager.getTransaction().commit(); } catch (RuntimeException x) { if (manager.getTransaction().isActive()) { manager.getTransaction().rollback(); } throw new TckRepositoryException(x.getLocalizedMessage(), x); } finally { uow.end(); } }
public static <T> T queryZeroOne(Class<T> resultType, String queryStr, Object... params) { try { beginUnitOfWork(); final TypedQuery<T> query = em().createQuery(queryStr, resultType); if (params != null) { for (int i = 0; i < params.length; i++) { Object param = params[i]; query.setParameter(i + 1, param); // JPA uses 1-based indexes } } T result = query.getSingleResult(); return result; } catch (NoResultException x) { return null; } finally { unitOfWork.end(); // if (em != null) // em.close(); } }
public static <T> List<T> queryList(Class<T> resultType, String queryStr, Object... params) { // EntityManager em = em(); try { beginUnitOfWork(); final TypedQuery<T> query = em().createQuery(queryStr, resultType); if (params != null) { for (int i = 0; i < params.length; i++) { Object param = params[i]; query.setParameter(i + 1, param); // JPA uses 1-based indexes } } List<T> result = query.getResultList(); return result; } catch (TransientObjectException toe) { log.debug("what happened"); return null; } finally { unitOfWork.end(); // em.clear(); // if (em() != null) // em().close(); } }
public static <T> T namedQueryZeroOne(Class<T> resultType, String namedQuery, Object... params) { try { beginUnitOfWork(); log.trace("namedQueryZeroOne unit of work ended for thread: " + Thread.currentThread()); TypedQuery<T> query = em().createNamedQuery(namedQuery, resultType); if (params != null) { for (int i = 0; i < params.length; i++) { Object param = params[i]; query.setParameter(i + 1, param); // JPA uses 1-based indexes } } T result = query.setHint("org.hibernate.cacheable", true).getSingleResult(); return result; } catch (NoResultException x) { return null; } finally { unitOfWork.end(); log.trace("namedQueryZeroOne unit of work ended for thread: " + Thread.currentThread()); // if (em() != null) // em().close(); } }
public static <T> List<T> namedQueryList(Class<T> resultType, String namedQuery, Object... params) { try { beginUnitOfWork(); log.trace("namedQueryList unit of work ended for thread: " + Thread.currentThread()); TypedQuery<T> query = em().createNamedQuery(namedQuery, resultType); if (params != null) { for (int i = 0; i < params.length; i++) { Object param = params[i]; query.setParameter(i + 1, param); // JPA uses 1-based indexes } } List<T> result = query.setHint("org.hibernate.cacheable", true).getResultList(); return result; } catch (NoResultException x) { return null; } finally { unitOfWork.end(); log.trace("namedQueryList unit of work ended for thread: " + Thread.currentThread()); // if (em() != null) // em().close(); } }
@Override public void removeAll() throws TckRepositoryException { uow.begin(); final EntityManager manager = managerProvider.get(); try { manager.getTransaction().begin(); // The query 'DELETE FROM Entity' won't be correct as it will ignore orphanRemoval // and may also ignore some configuration options, while EntityManager#remove won't manager .createQuery(format("SELECT e FROM %s e", getEntityName(entityClass)), entityClass) .getResultList() .forEach(manager::remove); manager.getTransaction().commit(); } catch (RuntimeException x) { if (manager.getTransaction().isActive()) { manager.getTransaction().rollback(); } throw new TckRepositoryException(x.getLocalizedMessage(), x); } finally { uow.end(); } }
public static void insert(EntityBase entity) { // EntityManager em = entityManager.get(); // unitOfWork.begin(); try { beginUnitOfWork(); em().persist(entity); } catch (Exception | Error ex) { throw ex; } finally { unitOfWork.end(); } // em().persist(entity); //em().flush(); //unitOfWork.end(); // TODO Auto-generated method stub }
public static <T> T namedQueryOne(Class<T> resultType, String namedQuery, Object... params) throws NoResultException { try { // unitOfWork. beginUnitOfWork(); final TypedQuery<T> query = em().createNamedQuery(namedQuery, resultType); if (params != null) { for (int i = 0; i < params.length; i++) { Object param = params[i]; query.setParameter(i + 1, param); // JPA uses 1-based indexes } } T result = query.getSingleResult(); return result; } catch (Exception | Error ex) { // System.out.println("Unable to perform request in " + EM.class.getSimpleName() + ":persist, full stack trace follows:" + ex); // ex.printStackTrace(); throw ex; // return null; } finally { unitOfWork.end(); } }
public static EntityBase find(EntityBase... entities) { boolean found = true; EntityBase foundEntity = null; try { beginUnitOfWork(); for (EntityBase entity : entities) foundEntity = em().find(entity.getClass(), entity.getId()); if (foundEntity != null) for (EntityBase entity : entities) log.debug(entity.getClass().getSimpleName() + ": " + entity.getId().toString() + " found in database"); else for (EntityBase entity : entities) log.info(entity.getClass().getSimpleName() + ": " + entity.getId().toString() + " not found in database"); return foundEntity; } catch (Exception | Error e) { found = false; log.error("Threw a Execpton or Error in org.cryptocoinpartners.util.persistUtil::insert, full stack trace follows:", e); throw e; //if (PersistUtilHelper.isActive()) // PersistUtilHelper.rollback(); } finally { unitOfWork.end(); } // if (em() != null) // em().close(); }
public static <T> T namedQueryZeroOne(Class<T> resultType, String namedQuery, Map<String, String> properties, Object... params) { try { beginUnitOfWork(); log.trace("namedQueryZeroOne unit of work ended for thread: " + Thread.currentThread()); TypedQuery<T> query = em().createNamedQuery(namedQuery, resultType); for (Map.Entry<String, String> entry : properties.entrySet()) { EntityGraph graph = em().getEntityGraph(entry.getValue()); query.setHint(entry.getKey(), graph); } if (params != null) { for (int i = 0; i < params.length; i++) { Object param = params[i]; query.setParameter(i + 1, param); // JPA uses 1-based indexes } } T results = query.setHint("org.hibernate.cacheable", false).getSingleResult(); return results; } catch (NoResultException x) { return null; } finally { unitOfWork.end(); log.trace("namedQueryZeroOne unit of work ended for thread: " + Thread.currentThread()); // if (em() != null) // em().close(); } }
private static void evict(EntityBase entity) { // EntityManager em = entityManager.get(); beginUnitOfWork(); em().detach(entity); unitOfWork.end(); // TODO Auto-generated method stub }
public static <T> void queryEach(Class<T> resultType, Visitor<T> handler, int batchSize, String queryStr, Object... params) { try { beginUnitOfWork(); final TypedQuery<T> query = em().createQuery(queryStr, resultType); if (params != null) { for (int i = 0; i < params.length; i++) { Object param = params[i]; query.setParameter(i + 1, param); // JPA uses 1-based indexes } } query.setMaxResults(batchSize); for (int start = 0;; start += batchSize) { query.setFirstResult(start); final List<T> list = query.getResultList(); if (list.isEmpty()) return; for (T row : list) { if (!handler.handleItem(row)) return; } } } finally { unitOfWork.end(); // if (em() != null) // em().close(); } } }
public void run() { try { GuiceContext.get(DataSource.class, annotation); } catch (Throwable T) { LogFactory.getLog("DBStartup") .log(Level.SEVERE, "Datasource Unable to start", T); } PersistService ps = GuiceContext.get(PersistService.class, annotation); ps.start(); UnitOfWork ow = GuiceContext.get(UnitOfWork.class, annotation); ow.end(); LogFactory.getLog("DBStartup") .log(Level.CONFIG, "DBStartupThread Started - " + annotation.getSimpleName()); }
/** * Boots the persistence unit during post-load asynchronously */ @Override public void postLoad() { try { GuiceContext.get(DataSource.class, getBindingAnnotation()); } catch (Throwable T) { LogFactory.getLog("DBStartup") .log(Level.SEVERE, "Datasource Unable to start", T); } PersistService ps = GuiceContext.get(PersistService.class, getBindingAnnotation()); ps.start(); UnitOfWork ow = GuiceContext.get(UnitOfWork.class, getBindingAnnotation()); ow.end(); LogFactory.getLog("DBStartup") .log(Level.CONFIG, "DB Post Startup Completed - " + getBindingAnnotation().getSimpleName()); }