Когда начинаешь писать приложение, работающее с JDBC или Spring JDBC, возникает вопрос — вроде бы понятно, как обращаться к базе, как делать запросы, как получать данные и т.д. Но почти нигде не сказано как настраивать соединение с базой данных. Я б хотел исправить это упущение.
Встраиваемые базы данных
Spring имеет собственную поддержку для встраиваемых баз данных, котоыре создаются в памяти на время существования контекста. На этом его поддержка заканчивается и если от встраивемой базы данных требуется большее время жизни или, например, обращение из нескольких процессов, настраивать соединение с ней надо вручную.
H2
Артефакт драйвера и самой базы:
1
2
3
4
5
|
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.190</version>
</dependency>
|
Варианты создания DataSource:
1
2
3
|
<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location="classpath:db.sql"/>
</jdbc:embedded-database>
|
1
2
3
4
5
6
7
|
<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
Артефакт драйвера и самой базы:
1
2
3
4
5
|
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.3</version>
</dependency>
|
Варианты создания DataSource:
1
2
3
|
<jdbc:embedded-database id="dataSource" type="HSQLDB">
<jdbc:script location="classpath:db.sql"/>
</jdbc:embedded-database>
|
1
2
3
4
5
6
7
|
<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
1
2
3
4
5
|
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.12.1.1</version>
</dependency>
|
1
2
3
|
<jdbc:embedded-database id="dataSource" type="DERBY">
<jdbc:script location="classpath:db.sql"/>
</jdbc:embedded-database>
|
1
2
3
4
5
6
7
|
<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>
|
MySQL
Артефакт драйвера:
1
2
3
4
5
|
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
|
DataSource, который ожидает найти MySQL на локальной машине, соединяется с базой test, используя имя пользователя user и пароль password:
1
2
3
4
5
6
7
|
<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
Артефакт драйвера:
1
2
3
4
5
|
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1207.jre7</version>
</dependency>
|
DataSource, который ожидает найти PostgreSQL на локальной машине, соединяется с базой test, используя имя пользователя user и пароль password:
1
2
3
4
5
6
|
<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
Артефакт драйвера:
1
2
3
4
5
|
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
|
DataSource, который ожидает найти MSSQL на сервере MS_SERVER, соединяется с базой test, используя имя пользователя user и пароль password в домене testDomain:
1
2
3
4
5
6
|
<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:
1
2
3
4
5
6
|
<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
Артефакт драйвера:
1
2
3
4
5
|
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>14</version>
</dependency>
|
DataSource, который ожидает найти Oracle database на локальной машине и соединяется используя имя пользователя user и пароль password:
1
2
3
4
5
6
|
<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>
|
Версии драйверов были верны на момент написания статьи, но в будущем наверняка изменятся.