본문 바로가기

분류 전체보기

(187)
AWS - EC2, RDS 활용 배포 RDS 구매 및 MySQL 세팅 1. AWS 로그인 후 대시보드 접속 2. RDS 검색 후 결과 클릭 3. 데이터베이스 생성 클릭 4. 표준생성, MySQL 클릭 5. 프리 티어를 선택 6. 입력 DB 인스턴스 식별자에 DB 이름 입력(이름은 원하는대로) 마스터 사용자 이름과 암호에 만들고 싶은 계정의 아이디, 비밀번호 입력(DB 접속용으로 사용) 7. DB 인스턴스 크기와 스토리지 설정은 Defualt 값 사용 8. 연결 → 추가 연결 구성 탭 클릭 설정 퍼블릭 엑세스 기능 : 예 이 설정을 해야 컴퓨터에서 AWS RDS의 MySQL과 연결 가능 VPC 보안 그룹 : 새로 생성 보안 그룹 이름 지정 가용 영역 : 옵션 중 선택 9. 추가 구성 → 초기 데이터베이스 이름 입력 10. 데이터베이스 생성 클..
QueryDSL QueryDSL - 래퍼런스 문서 QueryDSL 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 오픈소스 프레임워크. QueryDSL이 제공하는 Fluent API를 이용해 코드 작성의 형식으로 쿼리를 생성할 수 있게 도와줌. 사용이유 Spring Data JPA가 기본적으로 제공해주는 CRUD 메서드 및 쿼리 메서드 기능을 사용하더라도, 원하는 조건의 데이터를 수집하기 위해서는 필연적으로 JPQL을 작성하게 됨. 간단한 로직을 작성하는데 큰 문제는 없으나, 복잡한 로직의 경우 개행이 포함된 쿼리 문자열이 상당히 길어지게 되고, JPQL 문자열에 오타 혹은 문법적인 오류가 존재하는 경우 정적 쿼리가 아닐 시 런타임 시점에서 에러가 발생함. 위 같은 문제를 해소하기 위해 QueryDS..
Entity와 DTO의 분리 Dto와 Entity를 분리해서 사용하는 이유 DTO와 Entity 구분 DTO(Data Transfer Object) : 클라이언트와 서버 간 데이터 전송을 위해 설계된 객체 Entity : 데이터베이스에 저장되는 데이터 객체로, 데이터베이스와 직접적으로 연결 Entity를 직접 반환할 경우 생기는 문제점 엔티티 구조 변경 시 발생하는 문제 요구사항이 변경되어 엔티티 필드 이름이 변경 될 경우, API 스펙이 변경되어 추가 작업이 요구된다. 효과적인 유지 보수가 어려워 시간과 비용이 증가함 필요한 데이터만 전송하기 어렵다 엔티티를 직접 반환하면 엔티티에 존재하는 모든 데이터가 반환 됨(트래픽이 증가할 수 있으며 성능 및 비용면에서도 현저한 차이를 가져올 수 있음) 사용자가 필요로하는 데이터만 전송하기 ..
lombok 주의 사항 Lombok 사용 시 주의 사항 Lombok은 자바 컴파일 시점에서 특정 어노테이션으로 해당 코드를 추가할 수 있는 라이브러리이다. 간편한 코드 작성, 가독성, 유지 보수에 많은 도움이 되지만 편리한 만큼 잘못 사용하기 쉬운 것이 Lombok이다. @Data 사용 지양 @Data는 @ToString, @EqualsAnHashCode, @Getter, @Setter, @RequiredArgsConstructor을 모두 포함하는 강력한 어노테이션임. @Data 사용으로 인해 발생할 수 있는 문제점 1. 무분별한 Setter 남용 Setter는 그 의도가 분명하지 않고 객체를 언제든지 변경할 수 있는 상태가 되어서 객체의 안정성이 보장받기 힘들다. 불필요한 변경 포인트를 제공하지 않음으로써 안정성을 취할 수 ..
Controller, RestController 차이 Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있음 차이점 @Controller의 역할은 Model 객체를 만들어 데이터를 담고 View를 찾는 것이지만, @RestController는 단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답에 담아서 전송함 @Controller와 @ResponseBody를 사용하여 만들 수 있지만 이러한 방식은 RESTful 웹서비스의 기본 동작이기 때문에 Spring은 @Controller와 @ResponseBody의 동작을 조합한 @RestController을 도입 Spring의 Controller 동작방식 1. @Controller 이해하기 Controller로 view 반환..
메서드 명 find와 get의 차이 네이밍 컨벤션 find vs get (JPA에서의 내부 동작 차이) Repository 내 구현되는 메서드 명으로 find와 get을 선택함에는 다소 신중함이 필요함 메서드 명으로 find를 쓰느냐, get을 스느냐에 따라서 메서드 내부 구현이 어떻게 되어 있을지도 함께 전달할 수 있음 get vs find 기준 1. 값을 가져오는 시간 기준 get : 데이터를 가져오는 시간이 짧을 때 사용 find : 검색 프로세스나 연산 알고리즘을 사용하며, 데이터를 가져오는데 걸리는 시간이 좀 더 길다. 2. 데이터 가져오는 데 오류 여부 get : 데이터 가져오는데 오류가 발생하지 않는다. 비교적 간단한 로직 find : 데이터를 가져오는데 오류가 발생한다. 비교적 복잡한 로직 get을 사용하는 경우 데이터를 가..
WIL-4 Fact : 이번주 있었던 일, 내가 한 일 월 : Spring 입문 과정 테스트, 1레벨 과제 페어 리뷰, 2레벨 과제 페어 프로그래밍 시작 화 : 도서관 서버 유저 등록 및 조회 관련 API 개발 수 : 개발 API 테스트 및 프로젝트 Branch 통합 및 2레벨 프로젝트 마무리 목 : 2레벨 과제 페어 리뷰, 3레벨 과제 UseCaseDiagram 작성, API 명세서 작성 금 : 3레벨 프로젝트 생성, 관리자 등록 및 권한 인증/인가 API 구현(테스트 진행) 토 : Spring Security 적용 및 테스트 진행, 프로젝트 Branch 통합 및 프로젝트 마무리 Feeling : 나의 감정적인 반응, 느낌 프로젝트 마다 다른 페어와 진행하다 보니 약간 어색한 느낌이 들었음 API 구현 시 예기치..
TDD(Test-Driven Development), JUnit TDD(Test-Driven Development) 테스트 주도 개발 반복 테스트를 이용한 소프트웨어 방법론, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현 짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시 함 eXtream Programming(XP) 미래에 대한 예측을 최대한 하지 않고, 지속적으로 프로토타입을 오나선하는 애자일 방법론 중 하나이다. 이 방법론은 추가 요구사항이 생기더라도, 실시간으로 반영할 수 있다. TDD(Test-Driven Development), 테스트 주도 개발에 대한 프로그래머들의 의견은 늘 엇갈..