object/src/main/java/com/orientechnologies/orient/object/db/OObjectDatabaseTx.java
public <RET> RET save(final Object iContent, OPERATION_MODE iMode, boolean iForceCreate,
      final ORecordCallback<? extends Number> iRecordCreatedCallback, ORecordCallback<Integer> iRecordUpdatedCallback) {
    return (RET) save(iContent, null, iMode, false, iRecordCreatedCallback, iRecordUpdatedCallback);
  }
public <RET> RET save(final Object iContent, OPERATION_MODE iMode, boolean iForceCreate,
      final ORecordCallback<? extends Number> iRecordCreatedCallback, ORecordCallback<Integer> iRecordUpdatedCallback) {
    return (RET) save(iContent, null, iMode, false, iRecordCreatedCallback, iRecordUpdatedCallback);
  }
Saves an object to the database specifying the mode. First checks if the object is new or not. In case it's new a new ODocument
is created and bound to the object, otherwise the ODocument is retrieved and updated. The object is introspected using the Java
Reflection to extract the field values. <br> If a multi value (array, collection or map of objects) is passed, then each single
object is stored separately.