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