Java efficent стратегия получить доступ к DB

Простой вопрос: что более эффективный путь состоит в том, чтобы получить доступ к дб в Java/JDBC? Я - веб-разработчик, и я хотел бы написать некоторый допускающий повторное использование и масштабируемый код.
То, что интересно для меня, является использованием инструментов как ResultSupport: действительно ли это слишком расширяемо с точки зрения использования ресурсов?
Что Вы можете предложить?

5
задан s.susini 8 April 2010 в 17:13
поделиться

6 ответов

Не только для JDBC, а только для общего SQL.

  1. Если вам нужно повторно запустить запрос несколько раз, используйте PreparedStatement. Используйте хранимую процедуру, если она доступна. Это явно не переносимо, поэтому YMMV.

  2. Всегда закрывайте ResultSet или Statement, если вы их не используете. Закрытие Заявления автоматически закроет все ResultSet, связанные с Заявлением. Тем не менее, это хорошая привычка закрывать ResultSet.

  3. Попробуйте ограничить то, что можно запрашивать, например. выберите * из заказов, где order_date находится между XXX и yyy. В MySQL запрос может быть либо полным сканированием таблицы, либо «диапазоном» в зависимости от того, сколько данных возвращается. Итак, решите, насколько «гибкими» вы хотите, чтобы ваши запросы были

  4. Если вы используете MySQL, используйте объяснение для оптимизации вашего запроса. Если вы используете JPA, вы не увидите сгенерированный SQL. (Это не строго JDBC) Вы можете включить ведение журнала в диспетчере ORM для отображения используемого оператора SQL. Затем используйте объяснение, чтобы оптимизировать это. Вы можете использовать @NamedNativeQuery, если ORM генерирует действительно запутанный запрос

  5. . Если ваш драйвер JDBC поддерживает пакетное обновление, используйте его. Пакетные обновления поддерживаются в PreparedStatement и ResultSet.

  6. Вы также можете контролировать фиксацию. Хорошая идея - отключить его, если вы выполняете много обновлений. Вызов commit () самостоятельно.

5
ответ дан 14 December 2019 в 19:08
поделиться

Я думаю, что самый простой и распространенный способ - использовать Spring и их JDBCTemplate .

Лучший подход, вероятно, зависит от стека, который вы используете для создания своего веб-приложения. Если вы начинаете заново, то весна - хороший вариант.

-1
ответ дан 14 December 2019 в 19:08
поделиться

Используйте пул соединений (либо из вашего контейнера, либо из отдельного пула соединений, например c3p0 или DBCP ) и что-то вроде DBUtils или Spring JdbcTemplate .

0
ответ дан 14 December 2019 в 19:08
поделиться

Лучший ответ на этот простой вопрос: «это зависит от обстоятельств».

Есть много API, которые вы можете использовать для доступа к базе данных. Почти все они будут использовать JDBC API как средство связи с базой данных. Так что теоретически ничто не может сравниться с сырым JDBC низкого уровня (так же, как машинный код в теории всегда быстрее языков программирования более высокого уровня).

Но поскольку вы также любите писать повторно используемый код, я предлагаю вам изучить JPA . Это стандарт Java для сохранения объектов в реляционных базах данных. У него неплохая производительность, и он очень портативный.

Поскольку JPA - это просто спецификация, вы можете выбрать собственную реализацию: Hibernate , OpenJPA или любой совместимый сервер Java EE.

1
ответ дан 14 December 2019 в 19:08
поделиться

Существует проект, который отображает объекты Java в базы данных MySQL. Азирт.

0
ответ дан 14 December 2019 в 19:08
поделиться

Очень важно использовать всегда connection pool DataSource, например c3p0

0
ответ дан 14 December 2019 в 19:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: