Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

방카@Dev

[Spring]Ch8.Service와 DAO 구현_올인원 스프링 프레임워크 본문

BackEnd/Spring

[Spring]Ch8.Service와 DAO 구현_올인원 스프링 프레임워크

방카킴 2024. 6. 8. 00:14
 

올인원 스프링 프레임워크

올인원 스프링 프레임워크 작품소개: 기초부터 실무까지 한 권에 담은 올인원 스프링 프레임워크!웹 서비스의 핵심인 스프링 프레임워크의 전체적인 구조와 핵심 이론을 다양한 예제 프로젝트

ridibooks.com

1. 클라이언트 요청을 서버에서 처리하기 

- 최초 사용자의 요청이 발생하면 서버는 컨트롤러의 해당 메서드를 실행하고, 컨트롤러는 서비스를 이용

- 서비스는 데이터베이스 작업에 필요한 DAO를 이용

- 컨트롤러, 서비스, DAO의 작업이 끝나게 되면 서버는 사용자에게 응답을 하는데 이때 JSP 파일을 이용함

 

1) @RequestParam 애너테이션

- @RequestParam을 이용하면 클라이언트가 전송한 데이터를 서버가 받을 수 있음

@Controller
public class MemberController {

    @RequestMapping("/signUpConfirm")
    public String signUpConfirm(@RequestParam String m_id,
                                @RequestParam Integer m_pw,
                                @RequestParam String m_mail,
                                @RequestParam String m_phone) {
  		System.out.println("m_id:"+m_id);
		System.out.println("m_pw:"+m_pw);
		System.out.println("m_mail:"+m_mail);
		System.out.println("m_phone:"+m_phone);
		return "sign_up_ok";
	}

 

 

- @RequestParam 다음에 데이터 타입과 변수명을 명시

- 데이터 타입은 스프링이 자동으로 형 변환

2) VO 객체

- @RequestParam을 이용할 때 데이터의 개수가 많아지는 경우 코드가 길어지는 단점, 이런 경우 VO 객체를 이용

- 스프링에서는 데이터 이름을 이용해서 클라이언트에서 전송된 데이터를 VO 객체의 멤버 필드에 자동으로 할당.

@Controller
public class MemberController {

    @RequestMapping("/signUpConfirm")
	public String signUpConfirm(MemberVo memberVo) {
  		System.out.println("m_id:"+memberVo.getM_id());
		System.out.println("m_pw:"+memberVo.getM_pw());
		System.out.println("m_mail:"+memberVo.getM_mail());
		System.out.println("m_phone:"+memberVo.getM_phone());
		return "sign_up_ok";
	}

 

- 스프링은 MemberVo에서 사용자가 입력한 데이터의 이름과 동일한 멤버 필드를 찾고, 이에 해당하는 setter 메서드를 이용해서 멤버 필드에 데이터를 할당하므로 setter메서드 반드시 명시

 

2. Service Bean 객체 구현

# 서비스 객체 생성과 이용하는 3가지 방법

 

1) 객체 생성 연산자(new)를 이용해서 서비스 객체 생성

@Controller
public class MemberController {
	
MemberService memberService = new MemberService();

 

2) 스프링 설정 파일을 이용해서 스프링 컨테이너에 bean 객체로 생성하고 의존객체 자동주입 방법을 이용

//servlet-context.xml

<beans:bean id="memberService" class="com.kbfg.digi.member.MemberService"/>

 

3) 서비스 클래스에 애너테이션(@Service, @Component, @Repository) 명시하여 스프링 컨테이너에 bean 객체 생성하고 의존 객체 자동 주입 방법을 이용

@Controller
public class MemberController {
	
	@Autowired
	MemberService memberService;
@Service
public class MemberService {
	
	@Autowired
	MemberDao memberDao;
	
	public int signUpConfirm(MemberVo memberVo) {
		System.out.println("[memberService]signUpConfirm()");
		System.out.println("m_id:"+memberVo.getM_id());
		System.out.println("m_pw:"+memberVo.getM_pw());
		System.out.println("m_mail:"+memberVo.getM_mail());
		System.out.println("m_phone:"+memberVo.getM_phone());
		
		memberDao.insertMember(memberVo); //memberVo를 매개변수로 전달함
		return 0;
	}
	
	public MemberVo signInConfirm(MemberVo memberVo) {
		System.out.println("[memberService]signInConfirm()");
		MemberVo signInedMember = memberDao.selectMember(memberVo);
		return signInedMember;
	}
}

- @Service 애너테이션이 빈 객체를 스프링 IoC 컨테이너에 생성

3. DAO Bean 객체 구현

- DAO의 경우 데이터베이스와 통신하는 객체

- DAO는 서비스에서 데이터베이스 작업이 필요한 경우 호출하면 되므로, 서비스 객체에 멤버 필드로 선언하고 @Autowired를 이용해서 의존 객체를 자동 주입