본문 바로가기

항해 99/Spring

(49)
메서드 명 find와 get의 차이 네이밍 컨벤션 find vs get (JPA에서의 내부 동작 차이) Repository 내 구현되는 메서드 명으로 find와 get을 선택함에는 다소 신중함이 필요함 메서드 명으로 find를 쓰느냐, get을 스느냐에 따라서 메서드 내부 구현이 어떻게 되어 있을지도 함께 전달할 수 있음 get vs find 기준 1. 값을 가져오는 시간 기준 get : 데이터를 가져오는 시간이 짧을 때 사용 find : 검색 프로세스나 연산 알고리즘을 사용하며, 데이터를 가져오는데 걸리는 시간이 좀 더 길다. 2. 데이터 가져오는 데 오류 여부 get : 데이터 가져오는데 오류가 발생하지 않는다. 비교적 간단한 로직 find : 데이터를 가져오는데 오류가 발생한다. 비교적 복잡한 로직 get을 사용하는 경우 데이터를 가..
TDD(Test-Driven Development), JUnit TDD(Test-Driven Development) 테스트 주도 개발 반복 테스트를 이용한 소프트웨어 방법론, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현 짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시 함 eXtream Programming(XP) 미래에 대한 예측을 최대한 하지 않고, 지속적으로 프로토타입을 오나선하는 애자일 방법론 중 하나이다. 이 방법론은 추가 요구사항이 생기더라도, 실시간으로 반영할 수 있다. TDD(Test-Driven Development), 테스트 주도 개발에 대한 프로그래머들의 의견은 늘 엇갈..
Swagger 사용하기 Swagger 개요 API를 설계, 빌드, 문서화하고 테스트하는 데 사용되는 오픈 소스 프레임워크, 주로 RESTful API를 문서화하고 클라이언트 개발을 용이하게 하는 데 활용됨 Swagger는 API 명세를 정의하기 위한 OpneAPI Specification(OAS)를 사용함. 이 명세는 API 엔드포인트, 매개변수, 응답 형식 등과 같은 API의 구조와 동작을 정의함, Swagger를 사용하면 개발자는 API의 동자 방식을 이해하고 API를 통합하는 데 필요한 정보를 쉽게 찾을 수 잇음 주요 기능 API 문서화 : Swagger를 사용하여 API의 명세를 문서화할 수 있음, 이를 통해 API 사용자들은 API의 기능, 엔드포인트, 매개변수 등에 대한 정보를 쉽게 얻을 수 있음 API 테스트 : ..
Spring - JPA Entity 연관 관계 JPA Entity 연관 관계 연관 관계 정의 규칙 방향: 단방향, 양방향(객체 참조) 연관 관계의 주인: 양방향일 때, 연관 관계에서 관리 주체 다중성: 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 단방향, 양방향 데이터베이스는 외래 키 하나로 양 쪽 테이블 조인 가능(따라서 DB는 방향을 나눌 필요가 없음). 객체는 참조용 필드가 있는 객체만 다른 객체를 참조하는 것이 가능함. 두 객체 사이에 하나의 객체만 참조용 필드를 가지고 참조하면 단방향 관계, 두 객체 모두 각각 참조용 필드를 가지고 참조하면 양방향 관계. 엄밀히 따지면 양방향 관계는 없고 두 객체가 단방향 참조를 각각 가져 양방ㅇ향 관계처럼 사용하고 말하는 것 JPA를 사용해 DB와 패러다임을 맞추기 위해 객체는 연..
Spring - Bean, 로그인/회원가입, Security, Validation Bean Bean 수동 등록 @Component를 사용하면 @ComponentScan에 의해 자동으로 스캔되어 해당 클래스를 Bean으로 등록 일반적으로 @Component를 사용하여 Bean을 자동으로 등록하는 것이 좋음 비즈니스 로직과 관련된 클래스들은 그 수가 많기 때문에 @Controller, @Service와 같은 애너테이션들을 사용해서 Bean으로 등록하고 관리하면 개발 생산성에 유리 수동 등록 사용할 때 기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들을 수동으로 등록하는 것이 좋음 공통 로그처리와 같은 비즈니스 로직을 지원하기 위한 부가 적이고 공통적인 기능들을 기술 지원 Bean이라 부르고 수동 등록함 비즈니스 로직 Bean 보다는 그 수가 적기 때문에 수동으로 등록하기 부담스..
RESTful API, 관심사 분리, @Setter 지양 RESTful API RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스 RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따름 API(Application Programming Interface) 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의, 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성 웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이 클라이언트 웹에서 정보에 액세스하려는 사용자, 클라이언트는 API를 사용하는 사람이거나 소프트웨어 시스템일 수 있음 리소스 리소스는 다양한 애플리케이션이 클라이언트에게 제공하는 정보, 리소스는 이미지,..
프로젝트 세팅 - UCD, API 명세서, ERD, Git 연동 UseCase Diagram 그리기 서비스(System)와 사용자(Actor)간의 상호작용을 다이어그램으로 표현한 것 사용자 관점에서 개발하려는 서비스의 기능 및 요소들을 한 눈에 확인 가능 구성요소 시스템(System) 개발하고자 하는 것 그 자체, 시스템의 범위를 정의하며 흐름이 일어나는 영역의 경계를 정의 사격형의 형태로 표시, 상단에 시스템의 이름을 정의 액터(Actors) 시스템 외부에서 시스템과 상호작용하여 특정한 목적을취하는 객체(사람, 회사, 타 시스템, 외부 장비 등) 반드시 하나 이상의 Use Caes와 상호 작용해야 함, 액터의 이름은 개인적이거나 무언가를 특정해서 지정 x Primary Actor : 시스템을 사용하고, 직접 이득을 보는 액터 졸라맨으로 표기(보통 시스템 왼쪽에 위치..
Spring - 입문 2 3 Layer Architecture 서버의 처리과정을 Controller, Service, Repository 3개로 분리 1. Controller Client의 요청을 받고 요청에 대한 로직 처리는 Service에 전담 Request 데이터 있을 시 Service에 같이 전달 Service의 처리 완료 결과를 Client에 응답 2. Service 요구사항을 처리(비즈니스 로직)하는 실세 현업에서는 서비스 코드가 계속 비대해짐 DB 저장 및 조회 필요 시 Repository에 요청 3. Repository DB 관리(연결, 해제, 자원 관리) DB CRUD 작업 처리(생성, 읽기, 수정, 삭제) 역할 분리 Controller - Service 분리 : Controller package com.spar..