Aller au contenu

Framework Spring/Bases de données

Un livre de Wikilivres.

Il est possible d’interagir avec des bases de données via Spring.

Pour JDBC, Java Database Connectivity et H2 on aura le pom.xml suivant

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>SimpleJavaProject</groupId>
	<artifactId>SimpleJavaProject</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<dependencies>
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<version>1.4.197</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.0.7.RELEASE</version>
		</dependency>
	</dependencies>
	<build>
		<sourceDirectory>src</sourceDirectory>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

Le code java est le suivant :

package mainPackage;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;

public class MainClass
{
	public static void main(String[] args)
	{
		EmbeddedDatabaseBuilder embeddedDatabaseBuilder = new EmbeddedDatabaseBuilder();
		EmbeddedDatabase embeddedDatabase = embeddedDatabaseBuilder.setType(EmbeddedDatabaseType.H2).setName("testDB;MODE=MySQL").build();
		JdbcTemplate template = new JdbcTemplate(embeddedDatabase);
		template.execute("create table sw (id int,name varchar)");
		template.execute("insert into sw (id,name) values (11,'A')");
		template.execute("insert into sw (id,name) values (38,'B')");
		template.execute("insert into sw (id,name) values (42,'THX')");
		System.out.println(template.queryForObject("select max(id) from sw",Integer.class));
	}
}

On crée une base de données embarquée dans l'application de type H2, ensuite le lien vers cette base de données. On lance 3 insertions dans une table nouvellement créée et on affiche le résultat de l'identifiant le plus grand, on obtient logiquement 42.