Ebean 支持多线程吗?

Does Ebean support multithreading?

Ebean ORM 是 Play 的首选 ORM! Java 框架。 当我在构建自己的对象关系映射器和其他对象关系行为模式以及使用 ORM 之间做出选择时,我觉得非常重要的一个标准是 Ebeans 是否支持对映射器的并发访问。 确实尽管玩!使用异步线程,仍然可能存在 reader/writer 问题,该问题是由使用相同对象的并发请求引起的。

那么问题来了,Ebean ORM支持多线程吗(reader/writer问题)?

Ebeans supports concurrent access to mappers

EbeanServer 对于多个并发使用是安全的。 EbeanServer 实例已构建并包含有关 bean 属性等的所有元数据(因此映射信息)。

EbeanServer 内部保存了一些可变数据,例如 L2 缓存、查询执行的性能指标、查询执行计划等,但这些都是线程安全的。

一般来说,Query 对象和查询结果(对象图)不是线程安全的,适合单线程使用。您可以通过 query.setReadOnly(true).

创建不能突变的只读对象图,因此可以安全地用于多线程使用

EbeanServer 还支持通过 findFutureRowCount()、findFutureList() 等在后台获取数据,它会在内部复制查询并处理细节。 findFutureRowCount() 在内部用作 PagedList 的一部分以获取总行数。