JPA/Hibernate и MySQL: примеры настройки

Перед тем, как соединяться из с , не забудьте создать пользователя, базу данных и предоставить пользователю права на неё:

Команды выше создают пользователя test с паролем test, создают базу данных test и, наконец, дают пользователю все права на эту базу. В условиях реального приложения разумеется следует выбрать пароль посложнее, да и права раздавать поаккуратнее.

Непосредственное соединение с MySQL

Перед тем, как использовать MySQL, необходимо добавить его JDBC драйвер в зависимости maven:

С драйвером MySQL в classpath можно настраивать Hibernate как провайдер. Напоминаю, что все настройки находятся в файле META-INF/persistence.xml

JDBC url у MySQL имеет следующий формат: jdbc:mysql://хост:порт/имябазы, например jdbc:mysql://127.0.0.1:3306/test. Имя пользователя и пароль передаются отдельными параметрами. Наконец, надо не забыть переключить диалект Hibernate на MySQL, что делается установкой свойства hibernate.dialect.

MySQL и пул c3p0

Однако, как мы знаем, одно соединение не очень удобно использовать в реальном приложении. Поэтомунастроим пул c3p0 для совместного использования сJPA/Hibernate и MySQL.

Для этого, кроме MySQL JDBC драйвера,  надо добавить непосредственно c3p0 и библиотеку hibernate-cp30 к зависимостям maven:

Для включения c3p0 достаточно добавить по меньшей мере один параметр c3p0 к настройкам Hibernate:

Остальные параметры остаются такими же, как и для MySQL без c3p0.

MySQL и пул

К сожалению, в Hibernate нет настолько высококачественной поддержки HikariCP, аналогичной c3p0. Поэтому настройка HikariCP требует чуть чуть больше работы.

В первую очередь, конечно же, надо добавить ещё и артефакт HikariCP в зависимости (не забываем про MySQL JDBC драйвер):

Потом необходимо изменить конфигурацию JPA/Hibernate для работы с HikariCP:

Все настройки соединения с MySQL переименовываются и к ним добавляется два дополнительных параметра. Вначале в Hibernate настраивается использование HikariCP, затем указывается какой класс использовать для соединения с MySQL.