Controller에서 중복되는 부분을 처리하려면?
비즈니스 메소드를 별도의 service객체에서 구현하도록 하고 컨트롤러는 service객체를 사용하도록 한다.
ex)컨트롤러1,2,3->회원service,상품service,게시판service
Service에서 중복으로 호출되는 코드의 처리
데이터 엑세스 메소드를 별도의 Repository(Dao)객체에서 구현하도록 하고 서비스는 레포지토리 객체를 사용하도록 함.
ex)서비스1,2,3->회원repository,상품repository,게시판repository
레이어드 아키텍처:
Presentation Layer(Controller)->Service Layer(Service)->Repository Layer(Repository)
서비스 객체란?
비즈니스 로직을 수행하는 메소드를 가지고 있는 객체.
보통 하나의 비즈니스 로직은 하나의 트랜잭션으로 동작한다.
트랜잭션(Transacton)이란?
트랜잭션은 하나의 논리적인 작업을 의미한다.
원자성: 전체가 성공하거나 전체가 실패하는 것.
일관성: 트랜잭션의 작업 처리 결과가 항상 일관성 있어야 한다는것. 중간에 데이터가 변경되어도 처음 참조한 데이터로 계속 진행.
독립성: 둘 이상의 트랜잭션이 병행실행되고 있을경우 어느 하나의 트랜잭션이라도 다른 트랜잭션의 연산을 끼어들수없다. 하나가 완료될때까지 다른 트랜잭션이 결과 참조 불가.
지속성: 트랜잭션이 성공적으로 완료되었을 경우 결과는 영구적으로 반영되어야한다.
이 글을 보니 서비스 객체와 트랜잭션에 대해 확실하게 이해할 수 있었습니다!