我们目前正在重新构建我们的一个JavaEE应用程序,以利用Morphia在MongoDB中建模数据。我们使用JavaEE 6和Seam 2.x为我们的应用程序提供基础。我的问题是,我们应该为Morphia Datastore
和DAO
对象使用什么范围?使用Application
范围并在整个应用程序中使用单个实例是否安全?或者是否应该使用更具体的范围,例如Request
?是否存在阻止我们使用Application
范围的并发或其他问题?
答案 0 :(得分:1)
DatastoreImpl中的状态非常少。有写注意事项,映射器和一些解码器的东西。如果这些设置对于您的应用程序是通用的(通常是这种情况),则可以在应用程序范围内共享此实例。如果你使用BasicDAO,那么它唯一的状态就是它运行的实体类和我们已经涵盖的数据存储区。这通常也是安全的分享。
一般来说,这些组件中的大多数都具有非常小的可变状态,这会破坏并发访问。测试总是一个好主意,但在这种情况下,这是一件非常安全的事情。