首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在带有Spring的Hibernate5中使用SessionFactory.getCurrentSession()获取会话

在带有Spring的Hibernate5中,无法使用SessionFactory.getCurrentSession()获取会话的原因是Hibernate5不再支持使用getCurrentSession()方法获取会话。相反,它推荐使用EntityManager来管理会话。

在Hibernate5中,可以通过以下步骤来获取会话:

  1. 配置Hibernate的SessionFactory bean:
  2. 配置Hibernate的SessionFactory bean:
  3. 创建一个HibernateTemplate bean,并将SessionFactory注入到它:
  4. 创建一个HibernateTemplate bean,并将SessionFactory注入到它:
  5. 在需要使用会话的地方,注入HibernateTemplate,并使用它来执行数据库操作:
  6. 在需要使用会话的地方,注入HibernateTemplate,并使用它来执行数据库操作:

通过以上步骤,我们可以在带有Spring的Hibernate5中获取会话并执行数据库操作。

关于Hibernate的更多信息,你可以参考腾讯云的产品文档:

请注意,以上答案仅针对Spring和Hibernate5的集成情况,如果你有其他特定的需求或使用其他版本的Hibernate,可能需要进行适当的调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

spring 中配置sessionFactory及用法

<!– 启用注解注入 –> <context:annotation-config /> <!– spring扫描的包 –> <context:component-scan base-package=”com.iven”/> <!– 配置数据源 –> <bean id=”dataSource” class=”org.apache.commons.dbcp.BasicDataSource” > <property name=”driverClassName” value=”com.MySQL.jdbc.Driver” /> <property name=”url” value=”jdbc:mysql://172.25.9.99:3306/fzghc” /> <property name=”username” value=”root”></property> <property name=”password” value=”123456″></property> </bean> <!– 配置Spring的SessionFactory –> <bean id=”sessionFactory” class=”org.springframework.orm.hibernate4.LocalSessionFactoryBean”> <property name=”dataSource” ref=”dataSource”></property> <property name=”annotatedClasses”> <list> <value>com.iven.entity.User</value> <value>com.iven.entity.Repairs</value> </list> </property> <property name=”hibernateProperties”> <value> hibernate.dialect=org.hibernate.dialect.MySQLDialect <!– hibernate.dialect=org.hibernate.dialect.SQLServerDialect –> hibernate.show_sql=true </value> </property> </bean> <!– 添加事务管理 –> <bean id=”transactionManager” class=”org.springframework.orm.hibernate4.HibernateTransactionManager”> <property name=”sessionFactory” ref=”sessionFactory”></property> </bean> <tx:annotation-driven transaction-manager=”transactionManager”/>

02
  • Hibernate获取当前Session,Hibernate清空当前Session的缓存

    每次update时,都要记录更新了什么字段,由什么值更新为什么值。所以使用的是Aop,在@around方法中,joinPoint.proceed()之前,运用方法的反射查询下数据库得到objectOld;joinPoint.proceed()之后,再运用方法反射查询下数据库得到objectNew。但是,因为每次update之前都会get一个model,因为get()方法得到的是 持久化状态 。所以这样就不容易得到update之前的值。我的做法是,在joinPoint.proceed()之前,运用方法的反射查询下数据库得到objectNew,因为此时对model的修改,已经跟进到了持久化状态;然后执行evict()方法,将objectNew转换到游离状态;然后再运用方法反射查询下数据库得到objectOld,再执行evict()将objectOld转换到游离状态。不然的话,会报同一个session里包含两个同一标识的不同model的异常。

    01
    领券