Is locking single session in repository thread safe? (NHibernate)
===

I read many posts saying multithreaded applications must use a separate session per thread. Perhaps I don't understand how the locking works, but if I put a lock on the session in all repository methods, would that not make a single static session thread safe? 

like:

    public void SaveOrUpdate(T instance)
    {
        if (instance == null) return;
        lock (_session)
            using (ITransaction transaction = _session.BeginTransaction())
            {
                lock (instance)
                {
                    _session.SaveOrUpdate(instance);
                    transaction.Commit();
                }
            }
    }