code: func (session *Session) Init() {
  	session.statement.Init()
  	session.statement.Engine = session.engine
  	session.isAutoCommit = true
  	session.isCommitedOrRollbacked = false
  	session.isAutoClose = false
  	session.autoResetStatement = true
  	session.prepareStmt = false
  
  	// !nashtsai! is lazy init better?
  	session.afterInsertBeans = make(map[interface{}]*[]func(interface{}), 0)
  	session.afterUpdateBeans = make(map[interface{}]*[]func(interface{}), 0)
  	session.afterDeleteBeans = make(map[interface{}]*[]func(interface{}), 0)
  	session.beforeClosures = make([]func(interface{}), 0)
  	session.afterClosures = make([]func(interface{}), 0)
  	session.stmtCache = make(map[uint32]*core.Stmt)
  
  	session.afterProcessors = make([]executedProcessor, 0)
  
  	session.lastSQL = ""
  	session.lastSQLArgs = []interface{}{}
  
  	session.ctx = session.engine.defaultContext
  }
docs: // Init reset the session as the init status.