code: func (session *Session) Commit() error {
  	if !session.isAutoCommit && !session.isCommitedOrRollbacked {
  		session.saveLastSQL("COMMIT")
  		session.isCommitedOrRollbacked = true
  		session.isAutoCommit = true
  		var err error
  		if err = session.tx.Commit(); err == nil {
  			// handle processors after tx committed
  			closureCallFunc := func(closuresPtr *[]func(interface{}), bean interface{}) {
  				if closuresPtr != nil {
  					for _, closure := range *closuresPtr {
  						closure(bean)
  					}
  				}
  			}
  
  			for bean, closuresPtr := range session.afterInsertBeans {
  				closureCallFunc(closuresPtr, bean)
  
  				if processor, ok := interface{}(bean).(AfterInsertProcessor); ok {
  					processor.AfterInsert()
  				}
  			}
  			for bean, closuresPtr := range session.afterUpdateBeans {
  				closureCallFunc(closuresPtr, bean)
  
  				if processor, ok := interface{}(bean).(AfterUpdateProcessor); ok {
  					processor.AfterUpdate()
  				}
  			}
  			for bean, closuresPtr := range session.afterDeleteBeans {
  				closureCallFunc(closuresPtr, bean)
  
  				if processor, ok := interface{}(bean).(AfterDeleteProcessor); ok {
  					processor.AfterDelete()
  				}
  			}
  			cleanUpFunc := func(slices *map[interface{}]*[]func(interface{})) {
  				if len(*slices) > 0 {
  					*slices = make(map[interface{}]*[]func(interface{}), 0)
  				}
  			}
  			cleanUpFunc(&session.afterInsertBeans)
  			cleanUpFunc(&session.afterUpdateBeans)
  			cleanUpFunc(&session.afterDeleteBeans)
  		}
  		return err
  	}
  	return nil
  }
docs: // Commit When using transaction, Commit will commit all operations.