public function beginTrans()
    {
        try {
            return $this->_pdo->beginTransaction();
        } catch (PDOException $e) {
            // when time out, reconnect
            if ($this->_isTimeout($e)) {

                $this->_closeConnection();
                $this->_connect();

                try {
                    return $this->_pdo->beginTransaction();
                } catch (PDOException $e) {
                    throw $e;
                }

            } else {
                throw $e;
            }
        }
    }