Hibernate会话在@Transactional之外是否可用取决于以下几个因素:
- 事务管理器的配置:Hibernate会话的可用性与事务管理器的配置密切相关。在Spring框架中,可以通过配置事务管理器的传播行为来控制事务的范围。如果事务管理器的传播行为设置为PROPAGATION_REQUIRED或者PROPAGATION_REQUIRES_NEW,那么Hibernate会话将在@Transactional之外可用。如果传播行为设置为PROPAGATION_SUPPORTS或者PROPAGATION_NOT_SUPPORTED,Hibernate会话将在@Transactional之外不可用。
- 事务的启动和提交:在Spring框架中,使用@Transactional注解来标记一个方法或者类,以指示该方法或者类应该在一个事务中执行。如果在方法或者类上标记了@Transactional注解,并且事务管理器的传播行为设置为PROPAGATION_REQUIRED或者PROPAGATION_REQUIRES_NEW,那么Hibernate会话将在@Transactional之外可用。否则,Hibernate会话将在@Transactional之外不可用。
综上所述,Hibernate会话在@Transactional之外是否可用取决于事务管理器的配置和事务的启动和提交。在Spring框架中,通过配置事务管理器的传播行为和使用@Transactional注解来控制Hibernate会话的可用性。