Création de nouveaux beans session

Lors de la création de nouveaux beans de session, créez-les dans le projet WebSphereCommerceServerExtensionsData.

Pourquoi et quand exécuter cette tâche

Utilisez l'Assistant fourni dans Rational Application Developer pour créer les classes nécessaires pour le nouveau bean de session. Pour plus d'informations, voir Creating enterprise beans using wizards.

HCL Commerce utilise les beans d'accès dans son modèle de programmation, et les beans d'accès ne prennent pas en charge les interfaces locales. Pour utiliser des interfaces locales, plutôt que des beans d'accès, vous devez effectuer une recherche d'hôte directement et le mettre en cache vous-même à des fins de performance. Votre nouveau bean de session devrait étendre la classe com.ibm.commerce.base.helpers.BaseJDBCHelper. La superclasse fournit des méthodes qui vous permettent d'obtenir un objet de connexion JDBC à partir de l'objet source de données utilisé par le serveur HCL Commerce, de sorte que le bean de session participe à la même transaction que les beans d'entité d'autres. Voici un exemple de code pour démontrer les fonctions fournies par la superclasse :

public class mySessionBean extends
com.ibm.commerce.base.helpers.BaseJDBCHelper 
   implements SessionBean 
{

   public Object myMethod()
        throws javax.naming.NamingException, SQLException
   {

       ///////////////////////////////////////////////// 
      //  -- your logic, such as initialization --    // 
      ///////////////////////////////////////////////// 

         try {
             // get a connection from the HCL Commerce data source
             makeConnection();
             PreparedStatement stmt = getPreparedStatement(
                "your sql string");
            
						//////////////////////////////////////////////////////////// 
             // -- your logic such as set parameter into the prepared  //
             // statement --    																	  // 
             /////////////////////////////////////////////////////////// 
             ResultSet rs = executeQuery(stmt, false);

					  while(rs.next()) {

             ///////////////////////////////////////////////// 
             // -- your logic to process the result set -- //
            //////////////////////////////////////////////// 

						}
          } 
          finally {
             // return the connection to the HCL Commerce
data source
            closeConnection(); 
          }

        /////////////////////////////////////////////////////
       // -- your logic to return the result ---           //
       //////////////////////////////////////////////////////

   }

}

Dans l'exemple de code précédent, la méthode executeQuery prend deux paramètres d'entrée. La première est une instruction préparée et la seconde est un indicateur booléen lié à une opération de suppression du cache. Définissez cet indicateur sur true si vous souhaitez que le conteneur supprime tous les objets d'entité pour la transaction en cours à partir du cache avant d'exécuter la requête. Cela serait nécessaire si vous avez effectué des mises à jour sur certains objets d'entité et que vous avez besoin de la requête pour effectuer une recherche à travers ces objets mis à jour Si l'indicateur était défini sur false, ces mises à jour d'objet d'entité ne serait pas écrites dans la base de données jusqu'à la fin de la transaction.

Vous devez limiter l'utilisation de cette opération de suppression et généralement définir l'indicateur à false, sauf dans les cas où il est vraiment nécessaire. L'opération de suppression est une opération à forte intensité de ressources.