为什么在hibernate中创建会话以从数据库获取数据?
为什么我们在hibernate中打开会话从数据库中获取数据而不保留它,而在JPA中,我们使用EntityManager加载数据,但我们不打开事务只是从数据库获取数据。好问题。在本机Hibernate中,会话与JPA中的EntityManager具有相同的功能,那么为什么大多数Hibernate示例在读取数据时都有事务 如果您刚刚打开了一个会话,并且只执行一个读取查询,那么您应该不会有问题。然而,事实并非如此。问题是,如果使用的是现有会话,select查询可能会导致预查询刷新,最终可能会插入。 你可能还想看看这个 就我个人而言,我几乎从未在EntityManager或会话上显式调用getTransaction()。最好使用容器管理器EntityManager/Session和声明性事务(如Spring@Transactional或J2EEs@TransactionaAttribute)。你可以通过看这个来了解它是如何工作的。这个示例有点过时,因为您将使用spring数据JPARepositories而不是编写自己的DAO为什么在hibernate中创建会话以从数据库获取数据?,hibernate,jpa,Hibernate,Jpa,为什么我们在hibernate中打开会话从数据库中获取数据而不保留它,而在JPA中,我们使用EntityManager加载数据,但我们不打开事务只是从数据库获取数据。好问题。在本机Hibernate中,会话与JPA中的EntityManager具有相同的功能,那么为什么大多数Hibernate示例在读取数据时都有事务 如果您刚刚打开了一个会话,并且只执行一个读取查询,那么您应该不会有问题。然而,事实并非如此。问题是,如果使用的是现有会话,select查询可能会导致预查询刷新,最终可能会插入。 你