본문 바로가기
programming/MakinGProJect

게시판 만들기 10 자바 스프링프레임워크 서비스와 dao 연결하기

by 개코 - 개발과 코딩 2021. 10. 24.

자바 스프링프레임워크에서 서비스와 dao 를 연결하는 것을 데이터베이스에 접근할 수 있다. dao는 mysql 과 같은 데이터베이스에 접근하는 역할을 하고 데이터를 가져오거나 저장하는 역할을 한다.

게시판 만들기 10
자바 스프링프레임워크 서비스와 dao 연결하기

서비스와 dao를 연결하는 것으로 데이터를 가져오는 서버 레이어는 끝이 난다.

각각의 클래스 객체가 생성되고 등록되는 단계를 알면 스프링프레임워크의 반이 끝난 것이다.

이 개념이 분명 쉽지는 않을 것이다.

서비스와 dao 객체

서비스는 웹페이지 진입점의 역할을 하는 컨트롤러의 작업 요청을 받는다.

서비스는 자체적으로 작업을 수행하거나 dao의 작업을 호출한다.

dao는 서비스에서 받은 작업을 처리하고 결과를 다시 넘겨준다.

솔직히 어노테이션 관점에서 서비스나 dao는 같은 @Service 이다.

굳이 나누지 않아도 상관없을 수 있지만, 추후 기능이 많아지는 경우 굳이 나누는 일이 발생할 수 있기에 보통은 객체 메서드 호출을 위해 일삼아 나누기도 한다.

연결하기

서비스 객체에서 dao 객체를 연결하는 것은 @Autowired 어노테이션을 사용한다.

@Autowired 어노테이션을 사용하면 클래스가 등록되고 나머지는 스프링프레임워크가 관리한다.

컨트롤러 객체어서 서비스 객체를 연결했을 때에도 @Autowired 객체를 사용했다.

서비스 클래스 객체

서비스 클래스 객체는 이전에 이미 언급했다.

컨트롤러 객체에서 요청한 작업을 수행하고 결과를 보내준다.

이번에는 작업이 추가된다.

서비스 객체는 dao 클래스 객체를 등록하고 dao 객체에 작업을 요청하는 작업을 한다.

서비스 객체에서 dao 클래스 등록을 위해 @Autowired 를 사용한 것에 주목하자.

package com.crd.test.Template;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class Template2Service implements Template2ServiceImpl {
	
	@Autowired
    private Template3Dao gDao;
	
	@Override
	public Template0Model RequestData(Template0Model model) throws Exception {
	
		model.setDataObject("서비스 요청 도착 및 결과 반환");
		
		model = gDao.RequestData(model);
		
		return model;
	}

}

//-----

package com.crd.test.Template;

public interface Template2ServiceImpl {
	
	public Template0Model RequestData(Template0Model model) throws Exception;

}

dao 클래스 객체

dao 클래스 또한 코드적으로는 서비스 객체이다.

코드의 복잡성을 줄이기 위해 레이어를 나눈 것 뿐이다.

같은 서비스 어노테이션이지만 이것은 개발하는 곳마다 규격이 다르다.

어쨌든 흐름만 보자.

여기에서 사용한 dao 클래스 객체는 서비스에서 요청을 받아 작업을 처리한다.

작업을 처리한 후 dao 객체에 작업을 요청한 서비스에 결과를 보내준다.

dao 클래스 객체 또한 @Service 로 등록된 것에 주목하자.

package com.crd.test.Template;

import org.springframework.stereotype.Service;

@Service
public class Template3Dao implements Template3DaoImpl {

	@Override
	public Template0Model RequestData(Template0Model model) throws Exception {
		
		String vValue = model.getDataObject().toString();
		
		model.setDataObject(vValue + ", dao 요청 도착 및 결과 반환");
		
		return model;
	}

}


//-----

package com.crd.test.Template;

public interface Template3DaoImpl {
	
	public Template0Model RequestData(Template0Model model) throws Exception;

}

결과화면을 보면 알 수 있다.

서비스까지 도착하여 작업을 수행했고, 이후 dao 객체까지 도달하여 작업을 수행하였다.

이제 데이터베이스를 연결하는 일만 남았다.

반응형

댓글