我只需要维护一个新项目,并使用Hibernate + Spring。我写了一个DeliveryInfoServiceImpl,它有一个查询某个实体但没有任何更新或保存操作的方法,但是我有一个错误:
Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
除非我在方法或类上添加@Transactional。
我的问题是:
@Transactional
,虽然我只执行选择查询? @Transactional
是否意味着启用事务支持,当我仅使用" select"时,可能会产生更多不必要的开销。查询。以下是我的代码段:
@Override
public List<UnavailableRestaurantBean> getUnavailableRestaurantBean(String custAddress, List<Long> dishesId) {
List<Dish> dishes = getDishByIds(dishesId);//exception here
....
}
private List<Dish> getDishByIds(List<Long> ids){
return deliveryInfoDao.findByIds(Dish.class,ids);
}
我有以下事务管理器配置:
<tx:annotation-driven transaction-manager="myTxManager" />
<bean id="myTxManager" name="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="mySessionFactory">
</property>
</bean>