Méthode flush à distance pour les beans d'entité

WebSphere Application Server n'écrit pas les modifications apportées aux beans d'entité dans la base de données jusqu'au moment où la transaction est validée. Par conséquent, la base de données peut sortir temporairement de la synchronisation avec les données mises en cache dans le conteneur du bean d'entité.

Une méthode flush à distance est fournie (dans la classe com.ibm.commerce.base.helpers.BaseJDBCHelper), écrit toutes les modifications validées dans la transaction en cours associée à la requête utilisateur (elle extrait des informations depuis le cache de bean d'entreprise) et met à jour la base de données. Cette méthode distante peut être appelée par une commande. Utilisez cette méthode uniquement lorsque cela est absolument nécessaire. Elle est coûteuse en termes de frais généraux et a un impact négatif sur le rendement.

Prenons une commande de connexion qui inclut le code suivant :


UserAccessBean uab = ...;
 uab.setRegisteredTimestamp(currentTimestamp);
 uab.commitCopyHelper();
Avant que la transaction ne soit validée, la REGISTRATIONUPDATE dans la table USERS n'est pas mise à jour avec le horodatage actuel. La mise à jour se produit uniquement lorsque la transaction est validée. La méthode flush doit être utilisée de manière à ce que toute requête JDBC directe dans la même transaction renvoie l'utilisateur avec l'horodatage d'enregistrement spécifié. Par exemple, la requête suivante trouve tous les utilisateurs qui se sont inscrits après le 16/11/2002 à 14:52:20 :
select * from USERS where REGISTRATIONUPDATE > '2002-11-16 14:54:20'
L'exemple de snippet de code suivant montre comment la méthode flush à distance peut être appelée par une commande :
com.ibm.commerce.base.objects.ServerJDBCHelperBean helper = SessionBeanHelper.lookupSessionBean(ServerJDBCHelperBean.class);
helper.flush();