brunch

You can make anything
by writing

C.S.Lewis

by HighLuck Nov 04. 2016

서버팀 스프링 기본 개발

스프링으로 간단한 개발 해보기

 지난 포스팅에서 말한 스프링으로 간단한 하나의 레이어 개발해보는 것을 준비했다. 




스프링 하나의 레이어 개발해보기


- 유저 id로 Feedid 가져오기 개발

이걸 응용해서 자신들이 개발할 것들을 개발하기 바라요!


1.DB 쿼리 짜기

- User id 리스트를 가져오는 쿼리

SELECT id

FROM USER  

- 조건을 건다. 우리의 조건은 유저의 아이디로 조건 걸기

SELECT id

FROM USER  

WHERE user_id = 유저 아이디

- 유저 아이디에 테스트 01을 넣어 보고 실행이 된다면 이제 코드에 집어넣기를 한다.

- 우리는 Mybatis를 사용할 것이다.

- 아마 스프링 설정을 하였으면 Mybatis를 설정했을 것이다. 

하지만!! 이전에 해야 할 것이 있다. 바로 Model 클래스를 만드는 것


2.Model 클래스 만들기 

- 여기서 Model은 DTO(DataTransferObject)의 용도로 사용이 될 것이다.

- 이것은 데이터를 이동시킬 때 여기 모델의 gettet/setter에 데이터를 매핑시킨 후 데이터를 이동시키기 위함이다.(자세한 설명은 생략 더 궁금하면 나에게 물어보세요)

- 원래는 DB 스키마와 똑같이 만들어주는 게 좋다. 하지만 간단히 테스트 용도로 만들 것 이기 때문에 단순한 데이터를 넣겠다. 

Feed 모델 클래스이다.

public class Feed {

       privateint id;

       publicint getId() {

             returnid;

       }

       publicvoid setId(int id) {

             this.id= id;

       }

}

(getter/setter 는 메뉴의 Source -> 제너레이트 게터 세터를 누르면 된다.)

- Feed를 조회할 데이터 내용이 모두 들어가야겠지만, 테스트이기 때문에 id만 넣겠다.

그다음은 ValueObject이다.

- 모두가 다 같은 생각을 하는 것은 아니지만 일반적으로 VO(ValueObject)는 입력 값을 담아놓는 Object라고 말하는 경우가 많다.

- 우리는 UserId가 필요하기 때문에 UserId에 대한 ValueObject를 만들어 야한다.


public class UserValue {

       private String userId;

       publicString getUserId() {

             returnuserId;

       }

       publicvoid setUserId(String userId) {

             this.userId= userId;

       }

}


3.MyBatis 사용하기

- MyBatis는 DB ORM?이라고 하기에도 조금 뭐하고 뭐 어쨌든 그냥 편하게 동적 쿼리를 쓸 수 있는 프레임워크이다. Spring을 쓸 때 가장 일반적으로 쓰이는 퍼시스턴스 프레임워크이다.

(사실 동적 쿼리는 그냥 순수 자바에서도 쓸 수 있다.)

- 모델 객체에 매핑을 쉽게 할 수 있다는 장점이 있다.

- MyBatis 매퍼 경로가 설정된 곳에 xml을 만든다

<? xml version="1.0"encoding="UTF-8"?>

<! DOCTYPE mapper   PUBLIC "-//mybatis.org//DTD Mapper3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="feedDAO">

       <selectid="findAllByUserId" resultType="co.gamseong.app.domain.Feed"parameterType="co.gamseong.app.domain.UserValue" >

               SELECTid

               FROMFEED 

               WHEREuser_id = ‘${userId}’

       </select>

</mapper>

- resultType 은 말 그대로 데이터가 나오는 타입

- paprameterType은 말 그대로 파라미터 타입


4. DAO, Service, Controller레이어 구현

-DAO(DataAccessObject)

- 말 그대로 DB에 접근하는 객체

@Repository

public class FeedDAO extends AbstractDAO {

       @SuppressWarnings("unchecked")

       publicArrayList <Feed> findAllByUserId(UserValue value){

             return(ArrayList <Feed>)selectList("feedDAO.findAllByUserId", value);

       }

}

- Service 

- 비즈니스 로직을 구현 

@Service

public class FeedService {

       @Autowired

       privateFeedDAO feedDAO;

       publicArrayList <Feed> findAllByUserId(UserValue value){

             returnfeedDAO.findAllByUserId(value);

       }

}

- Controller

- url요청이 들어왔을 때 제어해주는 객체

@Controller

public class FeedController {

       @Autowired

       privateFeedService feedService;

       @RequestMapping(value= "/feed" , method =RequestMethod.GET)

       public @ResponseBodyArrayList <Feed> findAllByUserId(@ModelAttributeUserValue value){

             returnfeedService.findAllByUserId(value);

       }

}




 말 그대로 간단하게 하나의 레이어를 쭉 개발하는 것이다. 사실 생각보다 친구들이 개발을 잘해줬다. 하지만 개발이 문제라기보다는 스프링의 기본구조를 설명해줄걸 이라는 생각을 했다. 생각보다 기본 설정을 블로그 보고 따라 하는 것이 어려웠던 것 같다. 우선은 프로젝트를 하고 그 이후에 기회가 된다면 스프링의 구조를 한번 설명해주어야겠다.



매거진의 이전글 3주간의 스터디
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari