当前位置: 首页 > 面试题库 >

Spring Data(JPA)存储库是线程安全的吗?(又名SimpleJpaRepository线程安全)

高祺
2023-03-14
问题内容

我正在使用Spring Data(JPA)存储库来处理CRUD样板。

我这样定义我的存储库接口:

import org.springframework.data.repository.CrudRepository;

public interface FooRepository extends CrudRepository<Foo, Long>
{
  public Foo findByXAndYAndZ(X x, Y y, Z z);
}

然后Spring自动为我生成上述接口的实现。我们得到的是代理,但我相信最终我们可以归结为org.springframework.data.jpa.repository.support.SimpleJpaRepository

如果 基础目标类是线程JdkDynamicAopProxy安全的, A
是线程安全的。因此,问题是:SimpleJpaRepository线程安全吗?


问题答案:

通常,是的。假设是一个托管对象EntityManager,我们将从Spring的工厂类(如果您使用Spring作为容器)或CDI托管bean(通过@Producer方法声明)中获取。



 类似资料:
  • 问题内容: 在中,此变量被声明为是我的问题,在某些调用之后检查值还是在多线程代码中使用perror()是安全的。这是线程安全变量吗?如果没有,那还有什么选择呢? 我在x86体系结构上将Linux与gcc一起使用。 问题答案: 是的,它是线程安全的。在Linux上,全局errno变量是特定于线程的。POSIX要求errno必须是线程安全的。 参见http://www.unix.org/whitepa

  • 问题内容: 我们在项目中使用了Drools kieSessions。许多线程可以创建新的kieSession。有时在创建会话时线程可能会挂起。因此,问题是: 首先 是kieContainer.newKieSession线程安全操作吗? 上吊的原因可能是肮脏的文字或阅读的kie会话集之类的东西吗? 问题答案: 当我在实践中检查 不是线程安全的操作。

  • 问题内容: 在Java中:线程安全吗,即返回的迭代器是在任何时候反映列表的当前状态,还是仅在创建列表时反映列表的状态? 问题答案: List.iterator()的行为未定义或与其他List实现保持一致。 对于ArrayList,LinkedList,如果在迭代列表时对其进行了修改,则可以获得ConcurrentModificationException。(这不能保证)避免此问题的方法是使用syn

  • 在我的应用程序中,我使用多个线程来处理客户端连接。 我在调试时发现了一个非常奇怪的行为——我有一个SelectionKey,通过调用(使用调试器)它的interestTops()方法,返回值是1(READ),但当我将数据发送到与该键对应的套接字时,选择器不会被唤醒。。 如果使用调试器,我将特定选择键更改为1(即使是1),选择器会突然对该更改做出反应。 在给定的时间内,我只有一个线程处理一个连接,但

  • 问题内容: 自从我将哈希表用于任何重要的事情以来已经有一段时间了,但是我似乎想起了get()和put()方法是同步的。 JavaDocs没有反映这一点。他们只是说类Hashtable是同步的。我该怎么办?如果多个线程同时访问哈希表(假设它们没有修改同一条目),则操作将成功,对吗?我想我问的是“ java.util.Hashtable线程安全吗?” 请指导我摆脱这个问题… 问题答案: 它是线程安全的

  • 问题内容: 我在JBoss 7中部署的Java EE应用程序中使用PostgreSQL 9.1 JDBC4驱动程序(postgresql-9.1-902.jdbc4.jar)。 我可以假设 javax.sql.DataSource 是线程安全的,以便多个线程可以同时调用getConnection()方法吗? 问题答案: javax.sql.DataSource本身是一个接口,因此无论线程安全与否,