我正在使用带有 Objectify 的 appengine 来访问我的数据源。我将 Spring 用于我的业务层。为了处理数据,我使用了objectify-appengine-spring factory。
我想使用基于注释的本地事务。你知道我可以直接作为 Spring bean 插入的现有实现吗?
我真的很想避免使用线程局部变量实现我自己的事务提供程序的痛苦。
我正在使用带有 Objectify 的 appengine 来访问我的数据源。我将 Spring 用于我的业务层。为了处理数据,我使用了objectify-appengine-spring factory。
我想使用基于注释的本地事务。你知道我可以直接作为 Spring bean 插入的现有实现吗?
我真的很想避免使用线程局部变量实现我自己的事务提供程序的痛苦。
检查 LushLife 的ObjectifyTransactionManager
此处或此处。
需要 Spring XML 配置(您可以在此处或此处找到):
<!-- ObjectifyManager -->
<bean id="objectifyManager" class="ex.objectify.spring.ObjectifyManager">
<property name="basePackage" value="gso.model" />
</bean>
<!-- ObjectifyFactoryBean -->
<bean id="objectifyFactory" class="ex.objectify.spring.ObjectifyFactoryBean">
<property name="manager" ref="objectifyManager" />
</bean>
<!-- Custom TransactionManager implementation -->
<bean id="transactionManager" class="ex.objectify.spring.ObjectifyTransactionManager">
<property name="manager" ref="objectifyManager" />
</bean>
<!-- Necesary to enable use of @Transactional in your services -->
<tx:annotation-driven />
不要忘记使用@Transactional注释您的事务方法或类。
特别感谢这个项目的作者。
我猜该解决方案仅适用于 Objectify3。
我可以在 Spring AOP + Objectify4 事务中使用事务属性(MANDATORY、REQUIRED 等)的任何解决方案 - XML 或 Annotation?
此外,Objectify4 的 API 文档仍然提到ObjectifyFactory方法beginTransaction()的使用,我猜它不再可用。它给初学者带来了困惑。如果更新文档以反映最新行为会更有用。我希望我没有遗漏任何东西。