Objectif : Générer des Entities depuis une base de données existantes nommées Concession (nombreuses tables et relations variées) puis récupérer le model pour l’utiliser dans une appication Spring Boot.
Les étapes dans Eclipse :
Exemple du schèma de la BD avec les tables que nous allons récupérer dans un projet JPA
Fichier concession.sql à télécharger et exécuter dans votre DataBD concession sous MySQL.
Liste des paramètres :
Eventuellement, changer le nom de la connection.
Cela permet d’ajouter un pilote récent si besoin (optionnel).
serverTimezone=CET useSSL=false
On ne va pas utiliser EclipseLink, juste le mode Généric d’Eclipse. Voici un fichier JAR à télécharger et mettre dans la librairie du projet JPA.
Télécharger javax.persistence-api-2.2.jar
dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'mysql:mysql-connector-java' implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0' testImplementation 'org.springframework.boot:spring-boot-starter-test' }
# gestion BD MySQL spring.datasource.url=jdbc:mysql://localhost:3306/concession?useSSL=false&serverTimezone=CET spring.datasource.username=test spring.datasource.password=test spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # JPA/Hibernate spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=none /// Important /// spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect # Swagger spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER
Ajout de la classe SwaggerConfig :
package fr.bouget.jpa; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @Configuration public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.OAS_30) .apiInfo(apiEndPointsInfo()) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } private ApiInfo apiEndPointsInfo() { return new ApiInfoBuilder().title("JPA-Entities-From-Tables REST API") .license("Apache 2.0") .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html") .version("1.0-SNAPSHOT") .build(); } }
@Repository public interface CouleurRepository extends JpaRepository<Couleur, Integer> { }
@RestController @CrossOrigin("*") @RequestMapping("/couleur") public class CouleurController { @Autowired CouleurRepository couleurRepository; @GetMapping("/all") public List<Couleur> findAll() { return couleurRepository.findAll(); } }
Lien avec Swagger
Lien avec navigateur
Et voilà !
Retour vers les cours et TP Back-end
Retour vers le cours complet
Corrigé du Projet démo sur GitHub