Соединения с базами в Spring JDBC

Когда начинаешь писать приложение, работающее с JDBC или Spring JDBC, возникает вопрос — вроде бы понятно, как обращаться к базе, как делать запросы, как получать данные и т.д. Но почти нигде не сказано как настраивать соединение с базой данных.  Я б хотел исправить это упущение.

Встраиваемые базы данных

Spring имеет собственную поддержку для встраиваемых баз данных, котоыре создаются в памяти на время существования контекста. На этом его поддержка заканчивается и если от встраивемой базы данных требуется большее время жизни или, например, обращение из нескольких процессов, настраивать соединение с ней надо вручную.

H2

Артефакт драйвера и самой базы:

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.190</version>
</dependency>

Варианты создания DataSource:

<jdbc:embedded-database id="dataSource" type="H2">
    <jdbc:script location="classpath:db.sql"/>
</jdbc:embedded-database>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          destroy-method="close">
    <property name="driverClassName" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:/database"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>
</bean>

В первом случае создаётся база в памяти процесса, во втором открывается база данных /database на диске.

HSQLDB

Артефакт драйвера и самой базы:

<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.3.3</version>
</dependency>

Варианты создания DataSource:

<jdbc:embedded-database id="dataSource" type="HSQLDB">
    <jdbc:script location="classpath:db.sql"/>
</jdbc:embedded-database>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          destroy-method="close">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
    <property name="url" value="jdbc:hsqldb:file:/database"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>
</bean>

В первом случае создаётся база в памяти процесса, во втором открывается база данных /database на диске.

Apache Derby

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <version>10.12.1.1</version>
</dependency>

Варианты создания DataSource:

<jdbc:embedded-database id="dataSource" type="DERBY">
    <jdbc:script location="classpath:db.sql"/>
</jdbc:embedded-database>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          destroy-method="close">
    <property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver"/>
    <property name="url" value="jdbc:derby:/database"/>
    <property name="username" value="app"/>
    <property name="password" value="app"/>
</bean>

В первом случае создаётся база в памяти процесса, во втором открывается база данных /database на диске.

MySQL

Артефакт драйвера:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>

DataSource, который ожидает найти MySQL на локальной машине, соединяется с базой test, используя имя пользователя user и пароль password:

<bean id="dataSource"
  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/test" />
    <property name="username" value="user" />
    <property name="password" value="password" />
</bean>

PostgreSQL

Артефакт драйвера:

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <version>9.4.1207.jre7</version>
</dependency>

DataSource, который ожидает найти PostgreSQL на локальной машине, соединяется с базой test, используя имя пользователя user и пароль password:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="org.postgresql.Driver"/>
  <property name="url" value="jdbc:postgresql://127.0.0.1/test"/>
  <property name="username" value="user"/>
  <property name="password" value="password"/>
</bean>

MS SQL и Sybase ASE

Артефакт драйвера:

<dependency>
  <groupId>net.sourceforge.jtds</groupId>
  <artifactId>jtds</artifactId>
  <version>1.3.1</version>
</dependency>

DataSource, который ожидает найти MSSQL на сервере MS_SERVER, соединяется с базой test, используя имя пользователя user и пароль password в домене testDomain:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
    <property name="url" value="jdbc:jtds:sqlserver://MS_SERVER/test;domain=testDomain;integrated security=false" />
    <property name="username" value="user" />
    <property name="password" value="password" />
</bean>

IDB DB2

Увы, драйвер IBM DB2 не распространяется через публичные репозитории. Его можно скачать вручную с сайта IBM.

DataSource, который ожидает найти IBM DB2 на локальной машине и соединяется используя имя пользователя user и пароль password:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver" />
    <property name="url" value="jdbc:db2://localhost:50000/HCA:driverType=4;currentSchema=DB2ADMIN;" />
    <property name="username" value="user" />
    <property name="password" value="password" />
</bean>

Oracle

Артефакт драйвера:

<dependency>
  <groupId>ojdbc</groupId>
  <artifactId>ojdbc</artifactId>
  <version>14</version>
</dependency>

DataSource, который ожидает найти Oracle database на локальной машине и соединяется используя имя пользователя user и пароль password:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@localhost:1521/DB" />
    <property name="username" value="user" />
    <property name="password" value="password" />
</bean>

Версии драйверов были верны на момент написания статьи, но в будущем наверняка изменятся.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *