我想用read-write transaction切换read-only transaction和google-cloud-spanner-hibernate。
在JPA中,为每个LockMode
设置了Query
,但没有为每个Transaction
设置。有什么方法可以在google-cloud-spanner-hibernate中对其进行控制?
答案 0 :(得分:1)
我找到了一个可能有用的解决方案from the Hibernate forums。如果您使用的是本地Hibernate,则可以执行以下操作:
Session session = sessionFactory.openSession();
((SessionImplementor)session).connection().setReadOnly(true);
session.setHibernateFlushMode(FlushMode.MANUAL);
session.beginTransaction();
... do your work ...
session.commitTransaction();
这将使基础连接使用只读的Spanner数据库事务。转换操作似乎有点不寻常...我将跟进,并向Hibernate人员询问他们的确切建议,但这至少可以作为一种解决方法。您可以看到在春季HibernateTransactionManager中完成了类似的转换操作,所以也许这是常见的做法。
如果您使用的是Spring,则可以使用更优雅的方法-@Transactional(readonly = true)
批注。更多信息here。