Révision Complète - Java EE
1. Introduction a Java EE
Java EE (Jakarta EE aujourd'hui) est une plateforme pour le developpement d'applications d'entreprise en
Java.
- Architecture 3-tiers : Client -> Metier -> Donnees
- Conteneur Web (ex : Tomcat) vs Conteneur EJB
- Composants Java EE : Servlets, JSP, EJB, JSF, JPA, etc.
- Deploiement via fichiers .war sur serveurs (Tomcat, Wildfly...)
2. Cycle de vie dune Servlet
Une Servlet passe par plusieurs etapes :
- init() : appelee une seule fois a l'initialisation
- doGet() : traite les requetes HTTP GET
- doPost() : traite les requetes HTTP POST
- destroy() : appelee une seule fois avant la suppression
Permet de gerer dynamiquement des requetes cote serveur.
3. Protocole HTTP
HTTP est un protocole sans etat (stateless) utilise par les navigateurs :
- Requetes : methode (GET, POST), headers, corps
- GET : lecture, visible dans l'URL
- POST : envoi de donnees, securise
- HttpSession permet de maintenir l'etat cote serveur.
4. JDBC Pur
JDBC permet l'acces direct a une base de donnees relationnelle :
- Connexion via DriverManager.getConnection()
- Execution de requetes avec PreparedStatement
- Lecture des resultats via ResultSet
Moins pratique que JPA : code plus verbeux, pas de mapping objet.
5. Mapping d'heritage JPA
Révision Complète - Java EE
JPA permet de mapper l'heritage entre classes Java et tables :
- @Inheritance(strategy=...)
- SINGLE_TABLE : une seule table avec colonne discriminante
- TABLE_PER_CLASS : une table par classe
- JOINED : tables reliees par cle etrangere
Choix depend de la performance et de la clarte du modele.
6. Spring - Composants & Annotations
- @Component : annotation generique pour declarer un bean
- @Service : logique metier
- @Controller : pour les controleurs Web MVC
- @Autowired : injection automatique de dependance
- Spring Boot : simplifie la configuration via les starters
- application.properties : fichier de config centralise
Exemples Supplémentaires de Code à Compléter - Java EE
8. Compléter une annotation pour l'injection de dépendance
public class ClientController {
@_________
private ClientService clientService;
public List<Client> getClients() {
return clientService.findAll();
}
}
Solution : @Autowired
9. Compléter un mapping ManyToMany
@Entity
public class Etudiant {
@Id
@GeneratedValue
private Long id;
private String nom;
@___________
private List<Cours> cours;
}
Solution : @ManyToMany
10. Compléter une classe Spring Boot principale
@SpringBootApplication
public class ___________ {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Solution : public class Application
11. Compléter une méthode @PostMapping avec un corps JSON
@RestController
public class ClientController {
@PostMapping("/clients")
public void ajouterClient(@RequestBody ____________) {
// traitement ici
}
}
Solution : @RequestBody Client client
12. Compléter une entité avec une relation ManyToOne obligatoire
@Entity
public class Commande {
@Id
@GeneratedValue
private Long id;
@ManyToOne(optional = ________)
private Client client;
}
Solution : optional = false