Получение соединения от Entity Manager - PullRequest
0 голосов
/ 07 ноября 2018

Мы пытаемся получить объект подключения из 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();
                }
            }
        });

Это отлично работает.

Мы обеспокоены тем, что когда этот код вызывается, каждый раз getConnection вызывается из DataSource. Означает ли это, что новое соединение получено из пула?

Это влияет на производительность в нашем случае использования. Мы понимаем, что текущее активное соединение будет использовано.

Является ли понимание неверным?

1 Ответ

0 голосов
/ 07 ноября 2018

Документация Hibernate гласит:

Контроллер, позволяющий пользователям выполнять работу, связанную с JDBC, используя Соединение, управляемое этим сеансом.

Так что это (одиночное) соединение, используемое сеансом. Все остальное было бы ошибкой.

...