java - 从实体管理器获取连接
问题描述
我们正在尝试从 EntityManager 获取连接对象
下面是示例代码
final Session unwrap = proxy.unwrap(Session.class);
unwrap.doWork(new Work()
{
@Override
public void execute(Connection connection) throws SQLException
{
PreparedStatement ps = connection.prepareStatement(MY_QUERY);
for (Object value : valueSet)
{
....
....
ps.addBatch();
}
try
{
int[] ints = ps.executeBatch();
} finally
{
ps.close();
}
}
});
这很好用。
我们担心的是,当调用此代码时,每次都会在 DataSource 上调用 getConnection。这是否意味着从池中获得了新连接?
这对我们的用例有性能影响。我们的理解是,将使用当前的活动连接。
理解不正确?
解决方案
休眠文档说:
控制器,用于允许用户使用此 Session 管理的 Connection 执行 JDBC 相关工作。
所以它是会话使用的(单个)连接。其他一切都将是一个错误。
推荐阅读
- python - Numpy:重载 str 函数以在所有代码中获取指数符号
- scala - 如何动态提供 N 个编解码器以将字段作为 VectorCodec 处理,用于不包含大小字节的二进制字段的记录
- c - 检查重叠的日期和时间
- mongodb - 如何使用 _id 列的自定义值将数据框保存在 Spark 中的 Mongodb 中
- arm - FreeRTOS 是否保证第一个计时器滴答时间正好是 1 毫秒?
- html - HWND 类型不匹配
- javascript - 如何动态地将标签附加到
标签?
- c# - 如何使第二个数据网格名称在 C# 中可见?
- angular - MSAL、Angular 和 ASP.NET Core 的 CORS 错误
- reactjs - 当作为道具传递给功能组件时,反应功能未定义