Transaction
Basé sur les nouvelles fonctionnalités de YMPv2.0, le module JDBC est plus flexible dans le traitement des transactions de base de données. Tout objet géré par le gestionnaire d'objets de classe peut prendre en charge les transactions via l'annotation @Transaction ;
- Description du paramètre :
- valeur : type de transaction (se référer au type de transaction JDBC), la valeur par défaut est JDBC.TRANSACTION.READ_COMMITTED
Utilisation :
Tout d'abord, les objets de classe qui nécessitent la prise en charge des transactions de base de données doivent déclarer ; l'annotation @Transaction ;- Ensuite, ajoutez l'annotation @Transaction sur la méthode de classe qui doit spécifiquement activer le traitement des transactions ;
Exemple de code de transaction :
public interface IUserService { User doGetUser(String username, String pwd); boolean doLogin(String username, String pwd); } @Bean @Transaction public class UserService implements IUserService { public User doGetUser(final String username, final String pwd) { return JDBC.get().openSession(new ISessionExecutor<User>() { public User execute(ISession session) throws Exception { Cond _cond = Cond.create().eq("username").param(username).eq("pwd").param(pwd); return session.findFirst(EntitySQL.create(User.class), Where.create(_cond)); } }); } @Transaction public boolean doLogin(String username, String pwd) { User _user = doGetUser(username, pwd); if (_user != null) { _user.setLastLoginTime(System.currentTimeMillis()); _user.update(); // return true; } return false; } } @Bean public class TransDemo { @Inject private IUserService __userService; public boolean testTrans() { return __userService.doLogin("suninformation", "123456"); } public static void main(String[] args) throws Exception { YMP.get().init(); try { TransDemo _demo = YMP.get().getBean(TransDemo.class); _demo.testTrans(); } finally { YMP.get().destroy(); } } }