- Ajouter au projet Maven, la dépendance vers le
starter-jdbc
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
- Pour le driver de la base de données, créons 2 profils : 1 pour la production activée par défaut et 1 pour le développement. Compléter le projet Maven comme suit :
<profiles>
<profile>
<id>prod</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>dev</id>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
</profile>
</profiles>
- Ajouter la dépendance vers une base de données embarquée utilisée pour les tests.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
- Créer sur votre machine une base de données MySQL :
evalme
.
- Compléter le fichier
application.properties
:
spring.datasource.url=jdbc:mysql://localhost:3306/evalme
spring.datasource.username=root
spring.datasource.password=
spring.datasource.initialization-mode=always
- Créer un fichier
schema.sql
avec un script adapté à l'environnement de production, iciPostgreSQL
. Y ajouter un script de creation de table. Exemple :
drop table if exists personne;
create table personne (
id serial primary key,
nom varchar(75) not null,
prenom varchar(75) not null
);
- Créer un fichier
data.sql
et ajoutez-y un jeu de données. Exemple :
insert into personne(nom, prenom)
values ('nom 2', 'prenom 1');
insert into personne(nom, prenom)
values ('nom 3', 'prenom 2');
- Créer une implémentation Jdbc pour votre entité
dev.repositories.ENTITE.ENTITERepositoryJdbc
.
public class EntiteRepositoryJdbc implements EntiteRepository {
// NE PAS IMPLEMENTER A CE STADE, NOUS ECRIRONS LE TEST AVANT
@Override
public List<Entite> findAll() {
return null;
}
@Override
public void save(Entite entite) {
}
@Override
public void update(Entite entiteAvecId) {
}
@Override
public void delete(Entite entite) {
}
}
- Créer une classe (dans la partie test),
dev.config.DataSourceTestConfig
.
@Configuration
public class DataSourceTestConfig {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("schema.sql")
.addScript("data.sql")
.build();
}
}
- Créer une classe de test unitaire
dev.repositories.ENTITE.ENTITERepositoryJdbcTest
.
@ContextConfiguration(classes = {EntiteRepositoryJdbc.class, DataSourceTestConfig.class})
@RunWith(SpringRunner.class)
public class EntiteRepositoryJdbcTest {
@Autowired
private EntiteRepositoryJdbc entiteRepositoryJdbc;
// TODO créer les cas de test
}
-
Compléter le test.
-
Compléter l'implémentation.
-
Activer l'implémentation Jdbc pour votre entité et vérifier que l'application fonctionne bien avec la base de données.
-
Vérifier le fonctionnement Heroku.