Some clarification about Spring @Transactional annotation on a method

前端 未结 2 1097
抹茶落季
抹茶落季 2020-12-08 00:20

I am quite new in Spring world and I have developed a simple project that use Spring 3.2.1 and Hibernate 4.1.9 to implement a DAO. The project work correctly but I have some

2条回答
  •  心在旅途
    2020-12-08 01:05

    @Transactional is used upon the method.

    We declare on method level first it opens the transaction, perform the operation and close the transaction.

    If an operation is failed it will be rollback, if an operation is a success it will automatically be committed

    This is about @Transactional annotation finally&short.

    
    
    
        
        
        
        
    
    
        
    
        
            
            
            
            
        
    
        
            
                
                    
                    
    
                
            
        
    
        
        
            
        
        
    
    
    
    package hu.daniel.hari.learn.spring.orm.main;
    
    import hu.daniel.hari.learn.spring.orm.model.Product;
    import hu.daniel.hari.learn.spring.orm.service.ProductService;
    
    import java.util.Arrays;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.dao.DataAccessException;
    
    public class SpringOrmMain {
    
        public static void main(String[] args) {
    
            //Create Spring application context
            ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:/spring.xml");
    
            //Get service from context. (service's dependency (ProductDAO) is autowired in ProductService)
            ProductService productService = ctx.getBean(ProductService.class);
    
            //Do some data operation
    
            productService.add(new Product(1, "Bulb"));
            productService.add(new Product(2, "Dijone mustard"));
    
            System.out.println("listAll: " + productService.listAll());
    
            //Test transaction rollback (duplicated key)
    
            try {
                productService.addAll(Arrays.asList(new Product(3, "Book"), new Product(4, "Soap"), new Product(1, "Computer")));
            } catch (DataAccessException dataAccessException) {
            }
    
            //Test element list after rollback
            System.out.println("listAll: " + productService.listAll());
    
            ctx.close();
        }
    }
    

提交回复
热议问题