Pergunta

I am using Spring Data JPA for my application, which has the following layers:

  1. Service layer with Interfaces and Implements (annotated @service)
  2. CRUD repository layer with Spring Data JPA, together with custom repository implementations
  3. Entity layer

I was wondering where exactly is the correct place to put @Transactional. Currently, I have it in the service layer, where the repositories are being used.

Foi útil?

Solução

Transactions belong to Service layer. For example if you have HotelService, then the code would look like this:

@Service("hotelService")
@Transactional
public class HotelServiceImpl implements HotelService {
    @Autowired
    HotelDao hotelDao;

    // The rest of code omited ...
}

Outras dicas

What is the best with @Transactional you have to put it if you have a database access.

See Understanding the Spring Framework's declarative transaction implementation

you simply to annotate your classes with the @Transactional annotation, add the line (<tx:annotation-driven/>) to your configuration, and then expect you to understand how it all works.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top