Skip to content

Latest commit

 

History

History
124 lines (86 loc) · 3 KB

File metadata and controls

124 lines (86 loc) · 3 KB

TP #5 - Implémentation Spring Jpa

Configuration Maven

  • Ajouter au projet Maven, la dépendance vers le starter-data-jpa :
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Implémentation Jpa

  • Créer une implémentation Jpa pour votre entité dev.repositories.ENTITE.ENTITERepositoryJpa.
public class EntiteRepositoryJpa implements EntiteRepository {
    
    // Récupération d'une instance de l'Entity Manager
    @PersistenceContext
    private EntityManager em;


    // NE PAS IMPLEMENTER A CE STADE, ECRIVONS 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 Jpa pour les tests

  • Créer une classe (dans la partie test), dev.config.JpaTestConfig.
@Configuration
// Activation du support @Transactional.
@EnableTransactionManagement
// Import de la configuration liée à la source de données.
@Import(DataSourceTestConfig.class)
public class JpaTestConfig {

    /**
    * Gestionnaire de transaction.
    */
    @Bean
    public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
        JpaTransactionManager txManager = new JpaTransactionManager();
        txManager.setEntityManagerFactory(emf);
        return txManager;
    }

    /**
    * Création de l'entity manager factory.
    */
    @Bean
    // Cette configuration nécessite une source de données configurée.
    // Elle s'utilise donc en association avec un autre fichier de configuration définissant un bean DataSource.
    public EntityManagerFactory entityManagerFactory(DataSource dataSource) {

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(true);
        // activer les logs SQL
        vendorAdapter.setShowSql(true);

        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setJpaVendorAdapter(vendorAdapter);
        // alternative au persistence.xml
        factory.setPackagesToScan("dev.entites");
        factory.setDataSource(dataSource);
        factory.afterPropertiesSet();

        return factory.getObject();
    }


}

Test unitaire

  • Créer une classe de test unitaire dev.repositories.ENTITE.EntiteRepositoryJpaTest.
@ContextConfiguration(classes = {EntiteRepositoryJpa.class, JpaTestConfig.class})
@RunWith(SpringRunner.class)
public class EntiteRepositoryJpaTest {

    @Autowired
    private EntiteRepository entiteRepositoryJpa;

    // TODO créer les cas de test 
}
  • Compléter le test.

  • Compléter l'implémentation.

  • Activer l'implémentation Jpa pour votre entité et vérifier que l'application fonctionne bien avec la base de données.

  • Vérifier le fonctionnement Heroku.