code: @Around
  	public Object transact(Invocation<?> invocation) throws Throwable {
  		EntityTransaction transaction = manager.getTransaction();
  		
  		if (!transaction.isActive()) {
  			transaction.begin();
  		}
  		
  		try {
  			Object result = invocation.proceed();
  			
  			if (transaction.isActive()) {
  				transaction.commit();
  			}
  			
  			return result;
  		} catch (Throwable t) {
  			if (transaction.isActive()) {
  				transaction.rollback();
  			}
  			
  			throw t;
  		}
  	}
docs: Controls JPA {@code EntityManager}'s transaction commitment.
  First, this method begins a transaction on {@code EntityManager}. If the
  transactional method invocation is succeeded, this method commits the
  transaction. If the transactional method throws any exception, this
  method rolls back the transaction and re-throws the exception.
  
  @param invocation The encoded method invocation of transactional method.
  @return The invocation result.
  @throws Throwable If transactional method throws any exception.