перед вызовом session.gettransaction, я должен убедиться, что он существует?
если так, как я могу проверить, есть ли текущая незафиксированная транзакция в сеансе?
Нет, вам не нужно проверять. Session.getTransaction инициирует новую транзакцию, если текущей не существует.
Session.getTransaction
См. Исходный код для SessionImpl.getTransaction и JDBCContext.getTransaction.
SessionImpl.getTransaction
JDBCContext.getTransaction