Java & MySQL

UP: судячи зі статистики, багато хто приходить на цю статтю в пошуках прикладу взаємодії Java з MySQL. Наприкінці запису наводжу кілька прикладів.

А взагалі, спочатку цей пост був продовженням міркування про швидкість Java і як вона (швидкість) падає від затримок під час роботи із зовнішніми сервісами. Наприклад, підключення до MySQL.

Дається взнаки і те, що Java не вміє працювати через Unix-сокет і працює через TCP/IP з'єднання. Встановлення нового з'єднання для кожного запиту далеко не миттєва операція.

Продуктивність впала до 15 запитів за секунду.

Але відчай – не наш шлях. Як у PHP є persistent-з'єднання, так і в Java можна створити пул з'єднань. Для цього можна написати своє рішення, але простіше та ідеологічно вірніше скористатися готовим, вивіреним рішенням.

Apache DBCP- компонент, що дозволяє організовувати пули JDBC-з'єднань. Мінус рішення – обсяг. Що ж, за універсальність доводиться чимось платити. 120кб на dbcp + 90кб на pool (від якого dbcp залежить). Здається, моя реалізація була б набагато легшою :-/

Незважаючи на пенальті в обсязі бібліотек, продуктивність зросла до 80 запитів на секунду.

Існує кілька способів взаємодії: можна використовувати JSTL-теги для роботи з БД із JSP, можна "робити це" через JDBC з ява-коду, можна скористатися ORM (відображенням об'єктів у БД), такими як Hibernate, JDO, iBATIS (під якими працює JDBC), або Java Persistence API (під яким буде працювати той самий хібернейт, або інший провайдер).

Також взаємодія може бути реалізована в рамках фреймворку (наприклад, Spring DAO).