티스토리 뷰
Spring/Spring Basic
Spring : Web MVC + Hibernate with XML Config - Service Layer
Korean Eagle 2020. 5. 11. 13:02728x90
1. 서비스 Layer는 Facade 디자인 패턴을 사용한다.
2. Facade 정확하게 원하는 기능의 메소드를 제공하고 패턴은 세부적인 것을 내부적으로 감춘다.
2-1 Information hiding을 서비스를 레벨에서 제공한다.
2-2 데이터베이스의 여러 테이블, 외부 데이터 소스 등의 다양한 데이터의 출처와 상관없이 정확한 서비스를 제공한다.
2-3 일반적으로 다양한 테이블의 데이터를 조합하여 원하는 데이터를 제공하는 용도로 많이 사용한다.
3. @Service annotation을 클래스 정의에 사용한다.
3-1 @Service는 @Repository, @Controller와 동일하게 @Component를 상속하고 있다.
4. 여기서는 가장 간단한 기능의 서비스 구현 코드이다. 사실 동작에는 필요없는 부분이긴 하지만 확장을 위해서 만든다.
4-1 바꿔야 할 부분은 3가지 이다.
4-2 서비스 Interface를 만들고, 서비스 인터페이스를 구현하는 클래스를 작성한다.
4-3 @Transaction을 DAO구현 클래스에서 Service 구현클래스로 옮겨온다.
4-4 Controller에서 DAO객체 대신 Service를 주입 받아 사용한다.
// 서비스 인터페이스
package pe.pilseong.hibernateweb.service;
import java.util.List;
import pe.pilseong.hibernateweb.entity.Customer;
public interface CustomerService {
List<Customer> getCustomers();
}
// 서비스 인터페이스 구현 클래스
package pe.pilseong.hibernateweb.service;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pe.pilseong.hibernateweb.dao.CustomerDAO;
import pe.pilseong.hibernateweb.entity.Customer;
@Service
public class CustomerServiceImpl implements CustomerService {
@Autowired
private CustomerDAO customerDAO;
@Override
@Transactional
public List<Customer> getCustomers() {
return this.customerDAO.getCustomers();
}
}
// 컨트롤러 수정
@Controller
@RequestMapping("/customer")
public class CustomerController {
@Autowired
private CustomerService customerService;
@GetMapping("/list")
public String listCustomers(Model model) {
model.addAttribute("customers", this.customerService.getCustomers());
return "list-customers";
}
}
728x90
'Spring > Spring Basic' 카테고리의 다른 글
Spring : Web MVC + Hibernate with XML Config - Update (0) | 2020.05.11 |
---|---|
Spring : Web MVC + Hibernate with XML Config - Add (0) | 2020.05.11 |
Spring : Web MVC + Hibernate with XML config- 설정하기 (0) | 2020.05.11 |
Spring Basic : Form을 Date, LocalDate로 변환하기 (0) | 2020.04.29 |
Spring : Data JPA - 상속 Entity의 Lombok (0) | 2020.04.29 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
TAG
- mapping
- hibernate
- 스프링
- Spring Security
- 로그인
- one-to-many
- crud
- MYSQL
- 매핑
- spring boot
- one-to-one
- XML
- Many-To-Many
- Rest
- jsp
- 하이버네이트
- 스프링부트
- RestTemplate
- form
- 자바
- Validation
- 설정하기
- 설정
- 외부파일
- Angular
- Security
- login
- WebMvc
- Spring
- 상속
250x250