본문 바로가기

카테고리 없음

Spring Boot 웹 개발 초급

코드프레소 Java 웹 개발 체험단 활동 중

코드프레소 이러닝 강의 수강 - Spring Boot 웹 개발 입문

코드프레소 URL: https://www.codepresso.kr/

 

<Data Access Layer의 개념>

 

계층형 아키텍처 - Data Access Layer

 

 

Data Access Layer

  • Database에 접근하여 데이터 저장, 조회 등을 수행하는 역할
  • Service와 Database 사이의 추상화된 계층
  • Database 기술이 변경되면 Data Access Layer의 코드는 변경될 수 있지만, Service 계층의 코드는 변경되지 않는다

 

 

 

데이터를 접근하기 위한 기술

  • JDBC (Java Database Connectivity)
    • Database에 접근하기 위한 Java의 표준 API
  • JDBC Template
    • JDBC를 효율적으로 사용하기 위한 Spring API
  • SQL Mapper
    • SQL과 Java 객체를 매핑하는 기술
    • SQL의 input 또는 output을 Java 객체와 매핑
    • Java에서 SQL Mapper 적용을 위해 MyBatis가 일반적으로 사용된다
    • 국재에서 많은 기업의 대규모 프로젝트에서 활용되고 있다
  • ORM (Object Relational Mapping)
    • RDBMS의 테이블과 Java 객체를 매핑하는 기술
    • ORM Framework이 객체와 테이블을 매핑하는 역할을 수행한다
    • ORM Framework이 SQL을 자동 생성
    • Java, Spring에서 ORM 적용을 위해 Hibernate와 Spring Data JPA가 주로 사용된다
    • 전 세계적으로는 SQL Mapper보다 사용률이 월등히 높으며, 국내에서도 사용률이 높아져가고 있다

Spring Controller의 이해

  • 계층형 아키텍처의 Presentation Layer에 해당
  • Client(웹 브라우저, 모바일 앱)의 요청을 받고
  • Application Layer에 요청에 대한 처리를 위임하며
  • Client에 최종 응답을 하는 역할
  • view : Client가 요청에 대한 응답의 결과로 보게 되는 웹페이지
    • data : Client가 요청에 대한 응답으로 받는 데이터

Controller 코드

  • Spring Controller를 구현하기 위해서는 3개의 기본 Annotation이 사용
Annotation?

Java 소스코드에 추가적인 정보를 제공하는 방법
@로 시작하며 클래스, 메소드, 멤버변수, 파라미터 등에 부착 가능

3가지 유형의 Annotation이 있음

1. java complier에게 정보를 제공(에러 등을 찾아내기 위함)
2. SW 툴에 의해 사용되어 코드 생성이나 추가 작업을 진행
3. run-time 시 특정 동작을 추가적으로 실행

2,3번이 Spring에서 자주 사용
  • @Controller @RestController
    • Controller 역할을 하는 클래스를 지정, 클래스 상단에 명시
  • @RequestMapping
    • 특정 Request를 처리하는 메소드를 지정, 클래스 또는 메소드 상단에 명시

이 컨트롤러들은 위의 2번 유형의 컨트롤러

예시로

클래스나 메소드 위에 부착되어 컨트롤러들이 사용되는 것을 볼 수 있음

Framework 활용은 규칙을 지키는 것

  • 약속된 Annotation들을 Spring Framework가 스캔
  • Annotation이 부착된 코드들은 Spring Framework에 의해 관리되며, Spring Framework에 의해서 특정한 목적으로 사용

 

@Controller vs @RestController

대부분의 동작은 유사하다.

이 둘은 요청을 받아서 처리하고 응답함.

하지만 응답하는 형태가 다름.

Controller view를 응답합니다.(html파일 등)
RestController data를 응답합니다.(문자열, Json, xml 등)

 


@RequestMapping

  • RequestMapping이 붙어있는 메소드는 Client의 특정 요청이 왔을 때  SpringFramework에 의해 호출됨

URI (Uniform Resource Identifier)

  • URL과 유사한 개념
  • 특정한 자원에 접근하기 위한 이름 또는 주소
  • 웹상의 모든 자원들은 URI를 갖고 있음
    • 웹페이지
    • 이미지 -> 이미지도 주소가 있음
    • 영상

 

URI와 Spring RequestMapping

  • Spring Controller의 메소드들은 URI에 따라 호출이 결정
  • 기본 도메인에 이어지는 '/path'들에 의해 결정
    • ex) http://localhost:8080/user
    • http://localhost:8080/post
    • http://localhost:8080/post/1
  • RequestMapping Annotation에 URI Path 정보를 명시
    • @RequestMapping(value = "/user")

URI의 활용

  • URI는 요청하는 자원의 종류에 따라 이름을 정함.
    • www.codepresso-blog.com/user
    • www.codepresso-blog.com/posts
  • URI는 계층 관계로 표현이 가능하고 '/'로 계층을 구분
    • www.codepresso-blog.com/user/paid
    • www.codepresso-blog.com/user/enterprise
  • 단일 웹 애플리케이션 내에서 URI는 중복 X (중복 시 에러가 발생) -> Ambiguous mapping
  • 네이밍 규약
    • 소문자 사용
    • 요청하는 자원에 대한 명사 형태로 작성
    • 두 단어 이상 연결될 경우 '-'를 사용
    • 의미 있는 이름으로 일관성 있게 작성

 

Controller 클래스에 @RequestMapping 활용

특정 Controller 클래스 내부의 모든 메소드에 Path를 적용

- /user/paid

- /user/enterprise

- /user/administrator

1. Spring Framework는 @Requestmapping Annotation을 인식하여 특정 요청을 처리할 메소드를 관리
2. '기본 도메인/'에 이어지는 URI Path 정보를 기반으로 Client의 요청을 특정 메소드에 전달
3. @RequestMapping은 Controller 클래스와 Controller 클래스 내부의 메소드에 명시 가능
4. URI는 자원의 주소를 의미하며 계층으로 표현 가능