【问题标题】:Getting connection from Entity Manager从实体管理器获取连接
【发布时间】:2018-11-07 06:47:13
【问题描述】:

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

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

理解有误吗?

【问题讨论】:

标签: java hibernate database-connection


【解决方案1】:

Hibernate 文档说:

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

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

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 1970-01-01
    • 2013-12-13
    • 2018-07-15
    • 1970-01-01
    • 2014-07-22
    • 2018-04-26
    • 1970-01-01
    • 2017-12-11
    相关资源
    最近更新 更多