【发布时间】:2021-01-22 00:46:32
【问题描述】:
我在 Spring Boot 应用程序中使用 EntityManger 进行检索查询。下面给出一个示例 sn-p。
@Repository
public class EntityManagerUtil {
@PersistenceContext
private EntityManager entityManager;
public List<Employee> getAll(){
// Use entityManager here
}
}
我需要澄清以下问题。
一个。 EntityManger 是否会为每个调用创建(或)它会是一个单例吗? (我尝试打印 entityManager,它为所有调用返回相同的对象)
b.这种方法会导致任何连接泄漏吗?
c。读操作需要打@Transactional注解吗?
我使用的是spring boot 2.0.3-release版
【问题讨论】:
-
1.这取决于您的配置,2. 否,3. 是。
-
感谢 Denium。对于第一个问题,您能否分享一些有关我需要什么配置的信息,以及signleton entitymanager vs non-singleton ...以及为什么要在检索方法上添加@Transactional注释...如果我不这样做,有什么副作用添加
-
假设,如果我不在检索方法上添加@Transactional注解,是否会导致任何连接泄漏或性能问题...
-
它不会,但你想控制你的事务边界,总会有一个(隐式)事务,所以更好地控制它。 entitymanager 从来都不是单例的(你看到的是一个代理,它委托给线程绑定或事务绑定的实体管理器)。使用哪个取决于您的配置、事务设置等。
标签: spring spring-boot jpa