Fiche de révision : Programmation Java et persistance

Plan du Cours

  1. Héritage et polymorphisme bancaire
  2. Transferts bancaires atomiques
  3. Chaînes et objets Java
  4. Transactions et isolation JDBC
  5. JPA et chargement des entités
  6. Threads et synchronisation
  7. JavaFX et interfaces graphiques
  8. Collections, streams et utilitaires
  9. Exceptions et design patterns

1. Héritage et polymorphisme bancaire

Notions clés & Définitions

  • CompteBancaire : Classe abstraite qui déclare les attributs numero de type String et solde de type double, ainsi que la méthode abstraite retirer(double montant) et les méthodes deposer(double montant) et afficherSolde().

★ À maîtriser

  • Le polymorphisme permet à retirer() d’avoir un comportement dépendant du type concret de compte, notamment CompteCourant ou CompteEpargne.

  • Un CompteCourant autorise un découvert maximal de 50 000 FCFA.

  • Un CompteEpargne interdit tout retrait qui rendrait le solde négatif.

Compléments

  • La collection de la banque peut manipuler les comptes au moyen de références de type CompteBancaire, leur type commun.

Astuce mémo

CompteBancaire définit le contrat ; chaque sous-classe spécialise le retrait.

2. Transferts bancaires atomiques

★ À maîtriser

  • Un transfert entre deux comptes doit restaurer les soldes initiaux si le retrait ou le dépôt échoue.

  • Pour garantir l’atomicité des mises à jour, :

    • désactiver l’auto-commit
    • exécuter les deux requêtes
    • appeler commit() si tout réussit
    • appeler rollback() en cas d’échec

Compléments

  • La classe Banque contient une collection de comptes bancaires et permet d’ajouter un compte et d’effectuer un transfert entre deux comptes.

  • Un transfert de 5 000 FCFA du compte A vers le compte B est atomique si les deux mises à jour sont validées ensemble ou annulées en cas d’échec.

Astuce mémo

Retirer, déposer, puis valider ; en cas d’échec, restaurer les soldes.

3. Chaînes et objets Java

Notions clés & Définitions

  • Optional : Utilisé pour représenter une valeur potentiellement absente et gérer les valeurs nulles sans NullPointerException.

★ À maîtriser

📌 Pour construire une chaîne dans une boucle comportant des milliers d’itérations, StringBuilder avec append() est généralement plus adapté que la concaténation répétée avec String.

Compléments

  • Avec String s1 = "Java" et String s2 = new String("Java"), l’expression s1 == s2 vaut false car elle compare les références.

📌 Le mot-clé transient exclut un champ de la sérialisation.

4. Transactions et isolation JDBC

★ À maîtriser

📌 TRANSACTION_REPEATABLE_READ empêche normalement une transaction de voir deux valeurs différentes lors de lectures répétées, contrairement à TRANSACTION_READ_COMMITTED qui permet de voir les données validées par une autre transaction entre ces lectures.

Compléments

📌 Pour transférer 5 000 FCFA de A vers B de façon atomique en JDBC, les deux requêtes doivent être exécutées dans une transaction sans auto-commit, suivie d’un commit() ou d’un rollback().

  • Les choix de niveaux d’isolation JDBC sont :
    • TRANSACTION_READ_UNCOMMITTED
    • TRANSACTION_READ_COMMITTED
    • TRANSACTION_REPEATABLE_READ
    • TRANSACTION_NONE

Astuce mémo

READ_COMMITTED voit les validations ; REPEATABLE_READ stabilise les lectures répétées.

5. JPA et chargement des entités

Points essentiels

  • Avec une association @OneToMany(fetch = FetchType.LAZY), parcourir les employés de 100 départements peut provoquer un problème N+1 : une requête initiale, puis des requêtes supplémentaires pour charger les associations, selon le fournisseur et sa configuration.

📌 merge(e) retourne une instance gérée contenant l’état fusionné, mais l’objet détaché original e reste détaché.

6. Threads et synchronisation

★ À maîtriser

  • La méthode start() est utilisée pour démarrer un thread en Java.

Compléments

  • Une manière de définir la tâche d’un thread en Java est d’implémenter l’interface Runnable.

  • Semaphore est la classe proposée parmi les choix pour assurer une synchronisation manuelle entre threads.

7. JavaFX et interfaces graphiques

Points essentiels

  • Dans JavaFX, Scene est la classe qui représente la racine d’une interface graphique parmi les choix proposés.

  • Un fichier .fxml définit généralement l’interface utilisateur en JavaFX.

8. Collections, streams et utilitaires

★ À maîtriser

  • Set est l’interface qui représente une collection sans doublons.

Compléments

  • Un Stream de type Stream permet de traiter une collection de chaînes parmi les usages proposés.

  • forEach() exécute une action sur les éléments d’un Stream sans retourner de résultat.

  • La méthode executeQuery() permet d’exécuter une requête SQL de type SELECT en JDBC.

9. Exceptions et design patterns

★ À maîtriser

📌 throw lance une exception, tandis que throws déclare les exceptions qu’une méthode peut lancer.

Compléments

  • Le patron Singleton garantit qu’une classe ne possède qu’une seule instance.

  • L’annotation @Override indique qu’une méthode redéfinit une méthode de sa superclasse.

Tableaux de synthèse

Comportement des comptes

Type de compteRetrait
CompteCourantDécouvert maximal de 50 000 FCFA
CompteEpargneInterdit un solde négatif

Teste tes connaissances

Teste tes connaissances sur Programmation Java et persistance avec 10 questions à choix multiples et corrections détaillées.

1. Concernant la conception de CompteBancaire :

2. Un compte courant dispose d’un solde de 20 000 FCFA et un compte d’épargne de 40 000 FCFA. Concernant leurs retraits :

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Programmation Java et persistance avec 10 flashcards interactives.

Quelles propriétés définissent la classe CompteBancaire ?

C’est une classe abstraite qui déclare les attributs numero et solde, ainsi que retirer(), deposer() et afficherSolde().

Quel découvert maximal un CompteCourant autorise-t-il ?

50 000 FCFA.

Que doit restaurer un transfert bancaire si le retrait ou le dépôt échoue ?

Les soldes initiaux.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches