code: public void checkpoint()
      {
          if (log.isDebugEnabled()) log.debug("Checkpoint was called, commit changes hold locks on tx " + this);
          try
          {
              checkOpen();
              doWriteObjects(true);
              // do commit on PB
              if (hasBroker() && broker.isInTransaction()) broker.commitTransaction();
          }
          catch (Throwable t)
          {
              log.error("Checkpoint call failed, do abort transaction", t);
              txStatus = Status.STATUS_MARKED_ROLLBACK;
              abort();
              if(!(t instanceof ODMGRuntimeException))
              {
                  throw new TransactionAbortedExceptionOJB("Can't tx.checkpoint() objects: " + t.getMessage(), t);
              }
              else
              {
                  throw (ODMGRuntimeException) t;
              }
          }
      }
docs: Commit the transaction, but reopen the transaction, retaining all locks.
  Calling <code>checkpoint</code> commits persistent object modifications
  made within the transaction since the last checkpoint to the database. The
  transaction retains all locks it held on those objects at the time the
  checkpoint was invoked.