Opérations déclaratives
ActiveRecord prend en charge les transactions déclaratives. Les transactions déclaratives doivent être implémentées à l'aide de l'intercepteur fourni par ActiveRecordPlugin. Pour la méthode de configuration de l'intercepteur, consultez les chapitres pertinents d'Interceptor. Le code suivant est un exemple de transaction déclarative :
@Before(Tx.class)
public void trans_demo() {
/ / Obtenez le montant du transfert
Integer transAmount = getParaToInt("transAmount");
// Obtenez l'identifiant du compte de transfert
Integer fromAccountId = getParaToInt("fromAccountId");
// Obtenez l'identifiant du compte de transfert
Integer toAccountId = getParaToInt(" toAccountId");
/ / Opération de transfert
Db.update("mettre à jour le compte set cash = cash - ?where id = ?", transAmount, fromAccountId);
// Opération de transfert
Db.update("mettre à jour le compte set cash = cash + ? où id = ?", transAmount, toAccountId);
}
Dans le code ci-dessus, un seul intercepteur Tx est déclaré pour ajouter la prise en charge des transactions à l'action. De plus, ActiveRecord est également équipé de TxByActionKeys, TxByActionKeyRegex, TxByMethods et TxByMethodRegex, prenant respectivement en charge les transactions déclaratives actionKeys, actionKey Regular, actionMethods et actionMethod. Voici un exemple de code :
me.add (new TxByActionKeyRegex("/trans.*")); me.add(new TxByActionKeys("/tx/save", "/tx/update"));
Remarque : La table de base de données MySql doit être définie sur le moteur InnoDB pour prendre en charge les transactions. MyISAM ne prend pas en charge les transactions.