30.01.2015 Views

des enterprise beans - Département Informatique

des enterprise beans - Département Informatique

des enterprise beans - Département Informatique

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Exemple du bean entité bank<br />

L’exemple de code suivant montre les parties intéressantes du code de la<br />

classe d’implémentation de SavingsAccount. L’exemple supprime le code<br />

qui contient simplement les implémentations vi<strong>des</strong> <strong>des</strong> métho<strong>des</strong> <strong>des</strong><br />

interfaces EntityBean, comme ejbActivate(), ejbPassivate(), etc.<br />

Observez d’abord la méthode ejbLoad(), qui accède à l’objet entité de la<br />

base de données, pour voir comment un bean dont la persistance est<br />

auto-gérée implémente l’accès à la base. Notez que toutes les métho<strong>des</strong><br />

implémentées dans la classe SavingsAccount suivent la même approche que<br />

ejbLoad(). La méthode ejbLoad() commence par établir la connexion à la<br />

base de données. Elle appelle la méthode interne getConnection(), qui<br />

utilise un DataSource pour obtenir une connexion JDBC à la base de<br />

données à partir d’un pool de connexions JDBC. Une fois la connexion<br />

établie, ejbLoad() crée un objet PreparedStatement et construit son<br />

instruction SQL d’accès à la base de données. Comme ejbLoad() lit les<br />

valeurs de l’objet entité dans les variables d’instance du bean, elle<br />

construit l’instruction SQL SELECT d’une requête qui sélectionne la<br />

valeur du solde <strong>des</strong> comptes d’épargne dont les noms correspondent à un<br />

modèle. La méthode exécute ensuite la requête. Si la requête renvoie un<br />

résultat, c’est le montant du solde. La méthode ejbLoad() termine en<br />

fermant les objets PreparedStatement, puis la connexion à la base de<br />

données. Notez que la méthode ejbLoad() ne ferme pas réellement la<br />

connexion. A la place, elle renvoie simplement la connexion au pool de<br />

connexions.<br />

import.java.sql.*;<br />

import javax.ejb.*;<br />

import java.util.*;<br />

import java.rmi.RemoteException;<br />

public class SavingsAccount implements EntityBean {<br />

private entitycontext _constext;<br />

private String _name;<br />

private float _balance;<br />

public float getBalance() {<br />

return _balance;<br />

}<br />

public void debit(float amount) {<br />

if(amount > balance) {<br />

// marque la transaction en cours pour le rollback...<br />

_context.setRollbackOnly();<br />

} else {<br />

_balance = _balance - amount;<br />

}<br />

}<br />

public void credit(float amount) {<br />

_balance = _balance + amount;<br />

}<br />

10-16 Guide du dé veloppeur Enterprise JavaBeans

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!