mercredi, 17 octobre 2007

SQLLite dans AIR par Christophe Coenraets

« AIR Security | Main | L'accessibilité dans Flex »
La session présente la base de données embarquée avec AIR : SQLLite et en particulier les API d'accès et les bonnes pratiques. L'équipe AIR a décidé d'embarquer une BD dans AIR essentiellement pour gérer simplement le mode déconnecté. vous savez, vous êtes dans le TGV ou à la campagne et vous voulez saisir vos contacts ... impossible offline ! Mais si, mais si...

API très simple qui ressemble un peu à JDBC : on se connecte à un fichier local qui va stocker notre BD, on créée des requêtes SQL (SQL92) et on les exécutent.
Possibilité de requêtes synchrones ; ce qui est assez nouveau dans Flex où tout est asynchrone. Ceci dit déconseillé par Christophe.

Mode asynchrone : l'exécution d'une requête devient très proche de HTTPService par exemple. Il est même possible de tout faire en tag MXML.

Possibilité d'accéder aux metadata (loadSchema()) ; on a une description de nos tables et de notre schéma. Utile pour les outils d'admin par exemple.

Les Prepared statement sont supportés et encouragés
nommé (:firstName) suggéré
par position avec le ?
stmt.textselect * from employee where first=?

Les transactions sont supportés et nettement plus performantes
SQLConnection.begin()
SQLConnection.commit()
SQLConnection.rollback()

Quelques Bonnes Pratiques

Plusieurs requêtes en Asynchro
pattern : chaîner les exécutions : classe utilitaire de christophe : SQLQueue (le code est sur le blog)

stratégie d'accès aux données
1- SQL dans les vues
comme son nom l'indique, la requête se fait dans le MXML. pourquoi pas si c'est une petite application. Attention en revanche, gestion des données peu réutilisable, code d'accès dupliqué et disséminé dans le projet

2- DAO
Créer une classe par accès aux tables : exemple classe ContactDAO pour accéder à la table Contact.
Possiblités d'ajouter les techniques de gestion du mode déconnecté : créer une interface ContactDAO et implémenter dans une classe ContactDAOSQLite pour l'accès local et ContactDAORemote pour les accès au serveur.

Object Relational Mapping (ORM) framework
Si vous regardez le DAO : ya beaucoup de code... Une solution plus intéressante est de configurer la relation entre le monde objet et le monde relationnel dans un fichier de configuration le framework ORM génèrera à la volée les bonnes requètes SQL.

Utilisation des metadata (annotations comme [Bindable] qui se récupère sur l'objet au Runtime avec describeType() ); attention il faut ajouter dans les paramètres de compilation vos annotations. Le code du framework est sur le blog.

Synchro avec le serveur (gestion du mode déconnecté)
Assurée par FDS automatiquement... (du code pour les autres :-)

Les sources sur le blog : coenraets.org

Raoul
Posté par raoul le 10:45 AM dans la catégorie MAX Barcelone

 

[URL de Trackback pour cette entrée]

Commentaire : Ti'Punch at mer., 17 oct. 10:35 PM

Petit framework sympa à démarrer...EOF pour AIR !

« septembre »
lun.mar.mer.jeu.ven.sam.dim.
  12345
6789101112
13141516171819
20212223242526
27282930