반응형
목록
Spring (68)
[꼼꼼한 개발자] 꼼코더
✅ 영속 영역의 CRUD 구현 영속 영역은 웹 프로젝트 구조에서 마지막 영역이지만 실제로 구현시 가장 먼저 할 수 있는 영역이기도 한다. 영속 영역은 기본적으로 CRUD 작업을 하기 때문에 테이블과 VO(DTO) 등 약간의 준비만으로도 비즈니스 로직과 무관하게 CRUD 작업을 작성할 수 있다. MyBatis는 내부적으로 JDBC의 PreparedStatement를 활용한다 파라미터를 처리하는 ‘?’에 대한 치환은 ‘#{속성}’을 이용해서 처리한다. 💡영속성(persistency)이란? 데이터를 영구적으로 저장하는 것을 의미. 따라서 영속성 컨텍스트란 직역 하자면 데이터를 영구적으로 저장하는 환경 정도로 해석될 수 있다. 📸 create(intsert) 처리 tbl_board 테이블은 PK칼럼으로 bno를..
🏚 영속/비즈니스 계층의 CRUD 구현 이번 파트에서는 단순한 1개의 테이블만 사용하기 때문에 데이터베이스에 테이블, 시퀀스, 약간의 데이터들이 생성되었다면 코드를 이용하여 데이터에 대한 CRUD 작업을 진행한다. 영속 계층의 작업은 항상 다음과 같은 순서로 진행한다. 테이블의 칼럼 구조를 반영하는 VO(Value Object) 클래스의 생성 MyBatis Mapper 인터페이스의 작성/XML 처리 작성한 Mapper 인터페이스의 테스트 위의 과정 전에 JDBC 연결을 테스트하는 과정을 거치는 것이 좋지만, SQL Developer의 연결 자체가 이미 JDBC 연결을 이용하기 때문에 예제에서는 별도의 과정을 생략하고 진행하겠다. 🤝영속 계층의 구현 준비 대부분 웹 애플리케이션의 최종 목적은 데이터베이스에..
👷🏻♂️ 예제 프로젝트 구성 Spring LegacyProject로 ex02 프로젝트 생성한다. 생성 시 pom.xml 수정 → 데이터베이스 관련 처리 → 스프링 MVC 처리 순으로 진행한다. 👨🏻💻 pom.xml 수정 스프링 버전과 java 버전등을 수정한다 스프링 관련 추가 라이브러리는 spring-tx, spring-jdbc, spring-test가 필요하다. MyBatis를 이용할 것이므로 HikariCP, MyBartis, mybatis-spring, Log4jdbc 라이브러리들도 추가한다. 테스트와 Lombok을 사용할 것이고 사용을 위하여 jUnit 버전을 변경하고, Lombok을 추가한다. 서블릿은 3.0으로 수정해 준다. 서블릿 3.0버전과 JDK 8 기능을 활용하려면 Maven 관련..
👷🏻♂️ 프로젝트를 위한 요구사항 프로젝트 진행 전에 고객의 요구사항을 인식하고, 이를 설계하는 과정이 필요하다. 이를 흔히 요구사항 분석 설계라고 한다. ‘고객이 원하는 내용이 무엇이고, 어느 정도까지 구현할 것인가'에 대한 프로젝트 범위를 정하는 것이 목적이다. 요구사항은 너무 방대해질 수 있으므로, 단계를 정확히 구분해 주는 것이 좋다. 따라서 경험이 풍부하다면 초기 버전을 많은 기능을 포함시킬 수 있지만 경험이 적다면 최대한 단순하고 눈에 보이는 결과를 만들어 내는 형태로 진행하는 것이 좋다. 요구사항은 온전한 문장으로 정리하는 것이 좋다. 주어는 ‘고객’이고 목적어는 ‘대상’이 된다. 여기서의 ‘대상’은 결국 데이터의 베이스 설계와 시스템 설계에서 가장 중요한 용어가 된다. 다른 용어로는 도메..
👀 스프링 MVC 프로젝트의 기본 구성 스프링 MVC를 이용하는 프로젝트의 구성을 이해하는 것은 전체 데이터 흐름을 보는 것이다. 브라우저에서 전송한 데이터를 스프링 MVC의 어떤 단계를 거쳐 실행되는지 이해해야 문제 발생 시 빠른 대처와 대안을 찾을 수 있기 때문이다. 일반적인 웹 프로젝트는 3-tier(티어) 방식으로 구성된다. 🖥 Presemtatiom Tier(화면계층) 화면에 보여주는 기술을 사용하는 영역 예제에서는 Servlet/JSP나 스프링 MVC가 담당하는 영역 프로젝트의 성격에 맞춰 앱으로 제작하거나 CS(Client-Server)로 구성되는 경우도 있다. 이전 글들에서 스프링 MVC와 JSP를 이용한 화면 구성이 이에 속한다 👷🏻♂️ Business Tier(비즈니스 계층) 순수한 ..
✅ Controller의 Exception 처리 Controller를 작성할 때 예외 상황까지 고려한다면 처리해야 하는 작업량은 엄청나게 늘어난다. 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있다. @Exception와 @ControllerAdvice를 이용한 처리 @ResponseEntity를 이용한 예외 메세지 구성 ✍🏻 @ControllerAdvice @ControllerAdvice는 뒤에서 배우게 될 AOP를 이용한 방식이다. AOP에 대해 간단히 언급하자면 AOP는 ‘핵심적인 로직은 아니지만 프로그램에서 필요한 공통적인 관심사는 분리’하자는 개념이다. Controller를 작성할 때 메서드의 모든 예외사황을 전부 핸들링해야 한다면 중복적이고 많은 양의 코드를 작성해야 하지..
🗳 파일 업로드 처리 Controller의 많은 작업을 스프링 MVC가 처리하기 때문에 개발자는 해야 하는 역할에만 집중할 수 있지만. 조금 신경써야 하는 부분이 파일 업로드 처리이다. 파일 업로드를 위해서는 전달되는 파일 데이터를 분석해야 한다 Servlet 3.0 이후(Tomcat 7.0)에는 별도에 추가 라이브러리가 필요하지 않는다 하지만 ‘Spring Legacy Project’로 생성되는 프로젝트는 Servlet 2.5를 기준으로 생성되므로 일반적으로 많이 사용하는 commons-fileupload 라이브러리를 추가하여 예제를 작성하겠다. 👨🏻💻 파일 업로드 실습( commons-fileupload 라이브러리 사용) 👨🏻💻 pom.xml 추가 이후 파일이 임시로 업로드될 폴더를 upload/..
👨🏻✈️ Controller의 리턴 타입 스프링 MVC 구조가 (기존) 상속, 인터페이스 → (변경) 어노테이션을 사용하는 방식으로 변경된 이후 가장 큰 변화중 하나는 리턴타입이 자유로워졌다는 점이다. Controller의 메서드가 사용할 수 있는 리턴 타입은 아래와 같다. String : jsp를 이용하는 경우 jsp 파일의 경로와 파일이름을 나타내기 위해서 사용. void : 호출하는 URL과 동일한 이름의 jsp를 의미. VO, DTO 타입 : 주로 JSON 타입의 데이터를 만들어서 반환하는 용도로 사용. ResponseEntity 타입 : response 할 때 Http 헤더 정보와 내용을 가공하는 용도로 사용. Model, ModelAndView : Model로 데이터를 반환하거나 화면까지 같..