Uploaded image for project: 'OSAMES ORM'
  1. OSAMES ORM
  2. ORM-188

Ajout des nouvelles méthodes S/I/U/D avec un PreparedStatement

    XMLWordPrintable

    Details

    • Type: Story
    • Status: Analyzed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.2.0
    • Fix Version/s: 0.3.0
    • Component/s: None
    • Labels:
      None

      Description

      Motivation

      Un select par exemple, se fait avec deux appels de fonction, le premier appel de fonction retournant un PreparedStatement. Un select suivant avec le même template, les mêmes paramètres mais pas les mêmes valeurs de paramètres, se fera avec un seul appel de fonction. On gagne donc du temps lors du 2e select de ne plus interroger le mapping, formater le texte de la commande SQL...

      Contexte

      Exécution de plusieurs requêtes en changeant juste les valeurs des paramètres.

      Acteurs

      Code client de l'ORM.

      Plan de test

      Performance

      Mesure du temps de deux select en utilisant ces nouvelles fonctions.
      Comparaison avec deux selects successifs avec les anciennes fonctions.

      Exemple de code à développer

      Chaque fonction publique actuelle de DbToolsSelects, DbToolsInserts, DbToolsUpdates, DbToolsDeletes donnera lieu à l'écriture de deux fonctions pour créer et exécuter un PreparedStatement. Pour chaque cas d'usage il y aura ces tests unitaires :

      • un test qui appelle PrepareXXX et réalise des assertions sur les valeurs dans PreparedStatement
      • un test qui appelle ExecuteXXX avec des valeurs cohérentes (PreparedStatement et valeurs)
      • un test qui appelle ExecuteXXX avec des valeurs incohérentes (PreparedStatement et pas assez de valeurs ou autre cas de figure possible)

      Exemple, avec DbToolsSelects, en partant de :

      Unable to find source-code formatter for language: csharp. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      public static T SelectSingle<T>(List<string> lstPropertiesNames_, string sqlTemplateName_, List<string> lstWhereMetaNames_ = null, List<object> lstWhereValues_ = null, OOrmDbTransactionWrapper transaction_ = null)
      

      Nouvelles fonctions :

      Unable to find source-code formatter for language: csharp. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      public static PreparedStatement PrepareSelectSingle<T>(List<string> lstPropertiesNames_, string sqlTemplateName_, List<string> lstWhereMetaNames_ = null)
      
      Unable to find source-code formatter for language: csharp. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      public static T ExecuteSelectSingle<T>(PreparedStatement statement_, List<object> lstWhereValues_ = null, OOrmDbTransactionWrapper transaction_ = null)
      

      Plan de test supplémentaire - alternatif

      -

      Remarque - Commentaire

      Dans ADO.NET, les fonctions Prepare() et Execute(Non)Query() sont définies sur la classe SqlCommand.
      Nous les définissons sur les classes DbToolsXXX avec des noms PrepareYYY et ExecuteYYY.

        Attachments

          Activity

            People

            Assignee:
            babs Barbara Post
            Reporter:
            babs Barbara Post
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 4 hours
                4h
                Remaining:
                Remaining Estimate - 4 hours
                4h
                Logged:
                Time Spent - Not Specified
                Not Specified