在google-cloud-spanner-hibernate中切换只读事务和读写事务

问题描述 投票:0回答:1

我想用read-write transaction切换read-only transactiongoogle-cloud-spanner-hibernate

在JPA中,为每个LockMode设置了Query,但没有为每个Transaction设置。有什么方法可以在google-cloud-spanner-hibernate中对其进行控制吗?

hibernate google-cloud-spanner
1个回答
0
投票

我找到了可能有用的解决方案from the Hibernate forums。如果您使用的是Native Hibernate,则可以执行以下操作:

Session session = sessionFactory.openSession();
((SessionImplementor)session).connection().setReadOnly(true);
session.setHibernateFlushMode(FlushMode.MANUAL);

session.beginTransaction();

... do your work ...

session.commitTransaction();

这将使基础连接使用只读的Spanner数据库事务。强制转换操作似乎有点不寻常...我将跟进,并向Hibernate人员询问他们的确切建议,但这至少可以作为一种解决方法。您可以看到在Spring HibernateTransactionManager中完成了类似的转换操作,所以也许这是常见的做法。

如果使用Spring,则可以使用更优雅的方法-@Transactional(readonly = true)批注。更多信息here

© www.soinside.com 2019 - 2024. All rights reserved.