본문 바로가기
Spring

2022-11-23 스프링 customer패키지 리뷰

by HTT 2022. 11. 24.

- 우선 전체적인 과정을 그림으로 그린다면 이렇다.

- MVC패턴에서 한발짝나아가 각각의 기능을 하는 클래스들의 인터페이스를 만들어 상속받게 한다. 자기가 상속받는  클래스의 추상메소드를 구현해준다.

 

 

 

main메소드

 

 

1. 데이터 삽입을 위한 처리

package customer;

public class Main {

	public static void main(String[] args) {
		CustomerService service = new CustomerServiceImpl();
		//데이터 삽입을 위한
		CustomerDTO customer = new CustomerDTO("jang", "1234", "장동건", "VVIP");
		service.register(customer);
		System.out.println(customer.getName()+"데이터저장");
		
		//데이터조회를 위한 호출
		CustomerDTO findUser = service.read("jang"); //MybatisCustomerDAO의 리턴타입이 CustomerDTO이기 때문에
													 //같은 타입의 변수로 받아주기.
		System.out.println(customer.getName()+"데이터조회");  //id가 "jang"인 유저의 모든 정보를 출력할 수 있음
	}

}

=> 회원등록을 하기 위한 register() 메소드를 호출하기 위해 service라는 이름으로 CustomerService의 객체를 생성해준다.

회원의 데이터를 입력해주기 위해 CustomerDTO의 생성자를 이용해 customer라는 이름의 객체를 만들어 id, pass, name, state변수에 데이터를 입력해준다.

register() 메소드를 호출하며 정보를 저장한 객체의 주소를 함께 넘겨준다.

 

 

 

ServiceImpl

 

package customer;

public class CustomerServiceImpl implements CustomerService{
	CustomerDAO dao = new MybatisCustomerDAO();
	
	@Override
	public void register(CustomerDTO user) { //유저등록하는 메소드
		dao.add(user);  
	}
	@Override
	public CustomerDTO read(String id) {//유저정보 읽는 메소드
		return dao.getUser(id);			
	}

}

=> 넘겨받은 CustomerDTO객체의 주소를 user라는 이름의 매개변수로 받아 회원의 정보를 저장해주는 add메소드를 호출하며 한 번 더 넘겨준다.

 

 

 

DAOImpl

 

package customer;

import java.util.HashMap;
import java.util.Map;

public class MybatisCustomerDAO implements CustomerDAO{
	static Map<String,CustomerDTO> map = new HashMap<String, CustomerDTO>();
	
	@Override
	public void add(CustomerDTO user) {
		System.out.println("MyBatis에 저장하기=====================");
		map.put(user.getId(), user);
	}
	@Override
	public CustomerDTO getUser(String id) {
		System.out.println("MyBatis에 조회하기=====================");
		return map.get(id);
	}

}

=> 데이터를 저장할 공간인 Map을 만들어주고 전달받은 데이터를 Map에 저장해준다.

"MyBatis에 저장하기===" 하기 라는 문구가 우선 출력된 후 add메소드를 호출할 때 넘겨준 매개변수를 같은 타입의 매개변수로 받아 Map의 메소드인 put()을 이용해 데이터를 넣어준다.

user.getId() → "jang", user 넘겨받은 객체의 주소이므로 id가 "jang"인 회원의 정보

 

HashMap<String, CustomerDTO>

+------------------------------+
          key | value           
     "jang" | 1234            
                 |  장동건      
                 |  VVIP           

+------------------------------+

 

 

//위에 풀내용이 있기 때문에 이 밑으로는 간략하게 첨부하겠음
public class Main

CustomerDTO findUser = service.read("jang");	
System.out.println(customer.getName()+" 데이터조회");

=> register() 메소드가 종료되면 다시 main메소드로 돌아와 가지고온 데이터를 출력해준다. customer.getName()  장동건

 

 

 

2. 데이터조회를 위한 호출

public class CustomerServiceImpl implements CustomerService

CustomerDTO findUser = service.read("jang");
System.out.println(customer.getName()+" 데이터조회");

=> id가 "jang"인 회원의 정보를 호출하기 위해 String타입의 데이터를 넘기면서 유저 정보를 읽어주는 메소드인 read()를 호출해준다.

 

 

public CustomerDTO read(String id) {//유저정보 읽는 메소드
	return dao.getUser(id);			
}

=> main메소드에서 "jang" 이라는 데이터를 같은 타입인 String타입의 id매개변수로 받아서 read() 메소드를 호출한 곳(회원의 정보를 조회해주는 메소드)으로 id("jang") 데이터를 넘겨준다.

 

 

public class MybatisCustomerDAO implements CustomerDAO

@Override
public CustomerDTO getUser(String id) {
	System.out.println("MyBatis에 조회하기==============================");
	return map.get(id); 
    }

=> "MyBatis에 조회하기===" 하기 라는 문구가 출력된 후 read메소드에서 String타입 'id'라는 매개변수로 "jang"을 넘겨받음. Map의 특성을 이용해 get()메소드를 사용하여 id로 회원의 정보를 가져와준다.

'id'변수에 담긴 "jang"과 일치하는 key를 찾아서 value 가져오기 → CustomerDTO객체의 주소에 저장된 "jang"의 데이터

정보를 가져오는 데 성공했다면 이 가져온 데이터를 자신을 호출한 곳으로 넘겨준다(다시 main).

 

 

public class CustomerServiceImpl implements CustomerService

CustomerDTO findUser = service.read("jang");
System.out.println(customer.getName()+" 데이터조회");

=> 넘겨받은 데이터를 리턴타입과 같은 타입의 변수를 만들어 저장해주고 데이터를 조회하는 출력문을 입력해준다.

인스턴스 타입을 매개변수로 넘겨받았기 때문에 id가 "jang"인 유저의 모든 정보를 출력할 수 있다.

 

 

 

 

 

- 출력 결과

MyBatis에 저장하기==============================
장동건 데이터저장
MyBatis에 조회하기==============================
장동건 데이터조회

댓글