Quand on Ã©teind le pc, on perd souvent les donnÃ©es contenues dans un programme.
voilÃ  pourquoi il est utile de sauver le travail dans des fichiers, des bases, etc ...
D'oÃ¹ l'existence de la persistance des donnÃ©es.

Oracle Toplink JPA sera utilisÃ© pendant les cours, mais nous utiliserons la partie libre de cette implÃ©mentation.
Il est plus intÃ©ressant d'utiliser des librairies et ce avec Toplink.

Une base de donnÃ©es est relationnelle, contrairement Ã  nos objets, voilÃ  pourquoi nous devons permettre l'insertion correcte de nos objets dans une base de donnÃ©es relationelle.
IdÃ©e de persistance : on retrouve tout nos objets avec les Ã©ventuelles modifications apportÃ©es entre temps.

Mapping, en franÃ§ais se dit, d'aprÃšs le professeur, **mappage** !

JPA = Java Programmaing API (API = Application Programming Interface)
JDO = Java Database Object
C'est la norme de Sun.
Hybernet Ã©tait trÃšs utilisÃ©e avant la norme JDO. Donc Sun a pris le meilleur de JDO et le meilleur d'Hybernet, et en a fait une nouvelle norme.
Les nouvelles normes sont moins restrictives qu'avant.
Au dÃ©but avant JDO, la norme Ã©tait JPOX. La bibliothÃšque de rÃ©fÃ©rence est donc Oracle.

===== JavaBean =====

Quand nous crÃ©eons un objet Java Bean, nous ajoutons des sortes de commentaires qui vont informer que tel ou tel ascesseurs / mutateurs vont correspondre Ã  telle ou telle colonne / table dans la base de donnÃ©es.
Par dÃ©faut cela prend les gets/sets de la classe Java Bean, cependant il faut prÃ©ciser : 
  * Correspondance un Ã  plusieurs
  * Colone de la clÃ© Ã©trangÃšre

Il faut aussi un EM (= entity manager).

===== Persistance =====

Même aprÃšs avoir utilisÃ© un EM, et aprÃšs avoir demandÃ© les informations de l'objet, on sauve l'objet Ã  l'aide de la mÃ©thode **persistent**.
Tout va être enregistrÃ© dans la base de donnÃ©es ! Cependant il faut demander Ã  enregistrer les donnÃ©es, donc il faut toujours faire un persistant.

===== Transactions =====

Ne pas oublier de mettre le tout dans une transaction, elle même dans un contexte. Il faut donc le code associÃ©.
Une transaction est une opÃ©ration qui nÃ©cessite plusieurs actions, actions qui ne PEUVENT être sÃ©parÃ©es.
Exemple : un virement interne est une action de dÃ©bit et une action de crÃ©dit. Il faut donc que les deux soient faites ou pas du tout, aprÃšs plantage c'est soit l'un, soit l'autre.

===== Agent Java =====

L'agent java, ou //javaagent// va triturer le code, va **instrumentaliser** le code binaire de notre fichier Java pour permettre d'ajouter les choses nÃ©cessaire pour JDBC.


