从实体管理器获取连接

时间:2018-11-07 06:47:14

标签: java hibernate database-connection

我们正在尝试从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时。这是否意味着从池中获得了新的连接?

这对我们的用例具有性能影响。 我们的理解是将使用当前的活动连接。

理解不正确吗?

1 个答案:

答案 0 :(得分:0)

Hibernate文档说:

  

用于允许用户使用由此Session管理的Connection执行JDBC相关工作的控制器。

因此它是会话使用的(单个)连接。 其他一切都是错误。

相关问题