Skip to content

Latest commit

 

History

History
173 lines (123 loc) · 3.88 KB

File metadata and controls

173 lines (123 loc) · 3.88 KB

TP #4 - Implémentation Spring Jdbc

Configuration Maven

  • 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>

Base de données de développement

  • Créer sur votre machine une base de données MySQL : evalme.

Configuration

  • 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, ici PostgreSQL. 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');

Implémentation Jdbc

  • 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) {

    }
}

Configuration DataSource pour les tests

  • 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();
    }
}

Test unitaire

  • 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.