./3 > Une transaction va être annulée à chaque fois que tu fermes la connexion SQL, donc à chaque fin d'éxécution du script, non ?

(À moins d'utiliser une connexion persistante, mais ça entre de toutes façons en conflit avec le système des onglets multiples ^^)
./4 > Ah c'est malin !

Bon, sinon
http://dev.mysql.com/doc/refman/4.1/en/memory-storage-engine.html ? :]
(Ok, tu n'utilises peut-être pas MySQL, peut-être même pas un vrai sgbd, mais c'est une idée ^^)
Après pour nettoyer la base de données (si c'en est une) y'a quand même un moyen pas trop vilain de faire avec un timestamp sur l'enregistrement principal.
Sinon, la 1 et la 2 sont quasiment équivalentes (à part au niveau du code en lui-même où la 1 a un avantage si tu as déjà du code qui fonctionne sur de vrais objets) donc heu… Voilà quoi…
Zephyr (./4) :
Ça n'est pas toujours possible : selon les choix que je fais au début de la construction de mon objet, je peux avoir besoin d'informations spécifiques en provenance de la base de données pour continuer (envoyer l'intégralité de la base à l'utilisateur pour gérer tous les cas possible n'étant bien sûr pas envisageable).
Tu as un exemple où ça ne passerait pas, même avec plein de petites requêtes XmlHttp bien organisées ?