Java/Spring 8

[Spring] 8. 애플리케이션 만들기

9장부터는 앞서 공부한 내용을 토대로 웹 애플리케이션을 제작합니다. 12장까지에 걸쳐 데이터베이스 조작과 비즈니스 로직 처리, 레이어 생성까지 다루고 있습니다. 책에 적힌 코드를 기반으로 하되 제가 선호하는 방식으로 코드가 작성된 부분이 있습니다. 책에서는 PostgreSQL과 JDBC를 쓰지만 저는 MySQL과 JPA를 썼습니다. 두 차이로 달라지는 부분을 제외하고는 모든 코드가 동일하게 작성되었습니다. 항목 값 Project Gradle Project Spring Boot 3.1.1 Artifact quiz Packaging jar Java 17(temurin) Package name com.example.quiz Dependencies Spring Boot DevTools Lombok Spring ..

Java/Spring 2023.07.07

[Spring] 7. 유효성 검사

유효성 검사(validation)란 입력 내용이 요건에 만족하는지 그 타당성을 확인하는 입력 체크를 말합니다. 크게 두 개로 나뉘는데, 단일 항목 검사와 상관 항목 검사가 있습니다. 단일 항목 검사란 입력 항목 하나에 대해 설정하는 입력 체크 기능입니다. Form 클래스 등의 필드에 어노테이션을 부여해서 사용합니다. 상관 항목 검사란 여러 필드에 대해 혼합해서 체크하는 것을 말합니다. 상관 항목 검사를 수행하는 방법에는 두 가지가 있습니다. Bean Validation을 사용하는 방법과 스프링 프레임워크에서 제공하는 Validator 인터페이스를 구현하는 방법입니다. Validator 인터페이스를 구현하기 위해서는 커스텀 유효성 검사기를 주입하고 WebDataBinder 인터페이스의 addValidato..

Java/Spring 2023.06.29

[Spring] 6. 요청 파라미터(request parameter)

요청 파라미터(request parameter)란 클라이언트에서 서버로 전송되는 값을 의미합니다. 요청 파라미터의 종류에는 요청 쿼리 스트링(GET) 또는 요청 본문(POST)으로 보내지는 값처럼 뷰에서 입력한 값이나 선택 값, 숨김 파라미터로 전송된 값 등이 있습니다. 또는 뷰에서 클릭한 버튼의 name의 속성 값, URL 경로의 일부로 보내지는 값 등이 있습니다. 이를 취득하는 방법은 다음과 같습니다. @RequestParam Form 클래스 내용 어노테이션을 이용하여 파라미터를 하나씩 취득 스프링 MVC가 Form 클래스 내의 필드에 대해 값을 저장 상황 하나의 뷰에 버튼이 여러 개 있을 때 어느 버튼이 클릭되어 요청이 보내졌는지 식별 요청 파라미터를 모아 하나의 객체로 받아들임 장점 간편하고, 각..

Java/Spring 2023.06.20

[Spring] 5. MVC 모델

MVC 모델이란 프로그램의 처리 역할을 나누어서 프로그램을 작성하는 방법입니다. 역할은 모델(Model: M), 뷰(View: V), 컨트롤러(Controller: C)의 세 종류로 분류합니다. 이렇게 분류함으로써 프로그램 독립성이 높아집니다. 역할 분담을 통해 효율적인 개발, 개발하는 엔지니어의 분업화가 용이, 설계 변경에 유연하게 대응 가능하다는 장점이 있습니다. 모델은 비즈니스 로직(Business Logic)을 담당합니다. 컨트롤러에서 뷰에 넘겨주는 표시용 데이터 등을 저장하는 객체입니다. 뷰는 사용자 입력과 결과 출력 등 시스템에서 표현 부분을 담당하며 웹 애플리케이션에서는 주로 화면을 담당합니다. 컨트롤러는 서비스 처리를 담당하는 모델과 화면 표시를 담당하는 뷰를 제어하는 역할을 합니다. 사용..

Java/Spring 2023.06.15

[Spring] 4. 데이터베이스 작업

데이터베이스(Database)란 데이터를 보관하기 위한 상자라고 할 수 있습니다. 데이터베이스에서 데이터를 모을 때는 특정한 규칙을 적용하여 데이터를 정리해서 보관합니다. 관계형 데이터베이스(Relational Database)는 데이터를 표 형식으로 표현하고, 여러 표에서 항목의 값 사이에 관계를 맺고 있는 데이터베이스를 말합니다. 데이터베이스의 특징으로는 다음과 같습니다. 실시간 접근성(real time accessibillity): 사용자가 데이터를 요청하면 수 초 내에 결과를 서비스 계속적인 변화(continuous change): 어느 한 순간의 상태를 나타내지만, 데이터 값은 시간에 따라 항상 바뀜. 삽입, 삭제, 수정 등의 작업을 통해 바뀐 데이터 값을 저장 동시 공유(concurrent s..

Java/Spring 2023.06.05

[Spring] 3. 스프링 프레임워크의 핵심 기능 알아보기

A 클래스에서 다른(B) 클래스를 사용하려면 new 키워드를 이용하여 다른 클래스의 인스턴스를 생성하고 다른 클래스의 메서드를 사용합니다. 이때 다른 클래스에서 구현했던 메서드를 변경하면 A 클래스에서도 해당 메서드를 변경해야 합니다. 이때 A 클래스는 B 클래스에 의존한다고 합니다. 의존의 유형에는 클래스 의존(구현 의존)과 인터페이스 의존이 있습니다. 먼저 클래스를 의존하는 경우입니다. A 클래스에서 B 클래스의 인스턴스를 생성하고 메서드를 호출합니다. 그러나 설계가 변경되어 B 클래스가 아닌 C 클래스를 호출하도록 변경해야 합니다. 이를 위해서는 예를 들어, 인스턴스를 생성하는 부분 또는 메서드를 호출하는 부분 등 B 클래스를 직접적으로 지정하는 모든 부분을 C로 변경해주어야 합니다. 만약 이러한 ..

Java/Spring 2023.06.03

[Spring] 2. 기초 지식 배우기

어떤 기능을 구현하고자 할 때, 기능을 구현하는 것은 중요하지만 한 기능에 초점을 맞춰 코드를 작성하는 것은 바람직하지 않습니다. 기능을 추가하거나 변경하는 경우 수정이 어려울 수 있기 때문입니다. 대신 클래스가 인터페이스를 의존하게 해서 프로그램 전체에서의 수정이 아닌, 인터페이스에서 부분만을 수정하는 것만으로도 원하는 결과를 얻을 수 있습니다. 독립적인 프로그래밍이 가능한 것입니다. 인터페이스는 상수와 메서드 타입만 정의한 것입니다. 일종의 추상 클래스인 셈입니다. 인터페이스는 다른 클래스에서 구현하는 것을 전제로 만들어집니다. 클래스는 상속받을 때 extends를 쓰지만, 인터페이스는 implements를 씁니다. 자바에서는 원칙적으로 다중 상속을 허용하지 않지만, 인터페이스를 이용하여 다중 상속을..

Java/Spring 2023.05.26

[Spring] 1. 스프링 프레임워크(Framework)란?

프레임워크(Framework)를 직역하면 뼈대, 골격 등을 의미합니다. 이는 곧 프레임워크의 장단점으로 이어집니다. 장점은 프레임워크가 개발에 필요한 기초적인 기능을 제공하기 때문에, 시간과 비용 측면에서 유용합니다. 그러나 프레임워크가 제공하는 고유한 기능을 이해해야 한다는 단점이 있습니다. 프레임워크를 동작시키려면 규칙을 따라야 합니다. 프레임워크는 주로 라이브러리(library)와 비교합니다. 라이브러리는 편리한 프로그램을 모아 모듈화한 것으로, 역시 기존에 짜인 기능을 이용한다는 공통점이 있습니다. 둘의 가장 큰 차이로는 '제어의 주도권이 누구에게 있느냐'입니다. 프레임워크는 내가 작성한 코드가 프레임워크를 중심으로, 프레임워크에 의해 사용되므로 수동적입니다. 라이브러리는 특정 기능이 필요할 때마..

Java/Spring 2023.05.17