본문 바로가기

Coding/[Web] Backend 6

[SpringBoot] @Builder의 장점 @Builde의 장점 Builer pattern을 권장하는데 그 이유가 궁금해서 정리해봤다. 장점 가독성을 높일 수 있고 human error 를 줄일 수 있다. 필요한 데이터만 설정할 수 있고 코드가 줄어든다. 유연성을 확보할 수 있다. toBuilder의 이점을 누릴 수 있다. 가독성을 높일 수 있고 human error 를 줄일 수 있다. 멤버변수가 많아지는 경우 생성자의 파라미터를 식별하기 힘들고 순서에 따라 실수가 발생하기 쉽다. 개발자의 편리성을 높여주고 사람에 의한 실수를 줄일 수 있는 것이다. 필요한 데이터만 설정할 수 있고 코드가 줄어든다. 생성자를 별도로 만들어줄 필요가 없다. 특히 일부 변수에 대해서만 갖는 생성자들을 반복적으로 만들어줄 필요가 없다. 이는 불필요한 코드를 줄일 수 있.. 2024. 1. 14.
Singleton Pattern Signleton Pattern (싱글톤 패턴) 생성자가 여러 번 호출되더라도 실제 생성되는 객체는 하나가 되는 방식이다. 최초에 한번 생성된 이후 다시 생성자를 호출하더라도 기존에 생성되어있던 객체를 반환한다. 주로 DB에 접근하는 DAO와 같은 클래스나 Sevlet, Biz 등에 대해 singleton pattern을 적용한다. 특징 클래스에서 만들 수 있는 인스턴스의 수를 하나로 제한한다. 때문에 프로그램 실행 중에 객체가 최대 한 개만 있을 수 있다. 해당 객체에 전역적으로 접근이 가능해지고 다른 클래스 간에 데이터 공유가 용이하다. 동일 클래스에 대해 여러개의 인스턴스를 생성하지 않기 때문에 메모리 낭비를 방지할 수 있다. 방법 아래 코드에서 기존에 생성된 instance가 없을 경우에만 생성하.. 2023. 4. 4.
Entity, DTO, DAO, VO Entity, DTO, DAO, VO Servlet, Spring 등을 사용하면 로직 구현이나 데이터 교환을 위해 Entity, DTO, DAO, VO를 사용하게 된다. 각각을 한마디로 요약하면 아래와 같다. Entity : 테이블 DTO : Data Transfer Object → 데이터 교환용 DAO : Data Access Object → 데이터 접근용 VO : Value Object → 데이터 교환용 (Read-only 속성의 DTO) Entity Database의 테이블에 해당하며, 주로 하나의 테이블에 하나의 entity를 정의한다. 테이블과 최대한 동일하게 클래스를 생성하고, 주로 테이블에 가지는 column들을 필드로 가진다. 주의할 점 다른 클래스를 상속받거나 구현체여서는 안되며, 데이터.. 2023. 4. 3.
MVC 패턴 (feat. Servlet/JSP) MVC Model + View + Controller의 구조로 이루어진 패턴(동작 방식)을 말한다. Model 데이터와 비즈니스 로직을 관리/처리한다. 즉, 사용자의 요청에 대한 업무를 처리한다. DAO(Data Access Object) 등의 Java class View 사용자가 보게될 결과 화면을 담당한다. (레이아웃, 화면 처리 등) HTML, JSP Controller 사용자의 입력 처리와 흐름을 제어하고, 사용자에게 받은 명령을 model이나 view로 라우팅한다. 사용자로부터의 입력에 대한 응답으로 모델/뷰를 업데이트하는 로직을 포함한다. Servlet 동작 방식 사용자의 action들은 controller가 감지한다. Controller는 사용자의 action을 확인하고 model을 업데이트.. 2023. 4. 3.
PRG 패턴 : Post → Redirect → Get 배경 : 멱등성 동일한 요청을 여러 번 연속해서 보낼 때 한번 보내는 것과 여러 번 연속해서 보내는 것의 결과가 같은 것을 의미한다. GET, HEAD, PUT, DELETE는 멱등성을 가지지만, POST는 멱등성을 가지지 않는다. 예시 GET 메소드를 연달아 호출해도 같은 결과를 나타내지만, 게시글을 등록하는 POST를 연달아 호출하면 호출한 횟수만큼의 게시글이 등록된다. (별도 처리를 하지 않은 상황 기준) 혹은, Servlet에서 게시글 작성이나 주문을 POST로 전송 후 해당 요청에 대한 응답으로 redirect가 아닌 forward로 처리할 경우 새로고침 시 게시글 작성/주문이 중복해서 처리될 수 있다. PRG 패턴의 필요 회원가입, 게시글 등록, 메뉴 주문 등은 대부분 POST를 통해 이루어지.. 2023. 4. 3.