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();
            }
        }
    }