반응형

Spring 9

[Spring] JPA ID 설계 전략

JPA에서는 아래와 같이 Entity를 설계할 때, @Id 어노테이션으로 해당 프로퍼티가 Database에서 PK가 되는 것을 명시하고, @GeneratedValue 를 통해 어떻게 PK를 생성할 건지 생성 전략을 명시하고 있다. @Entitypublic class Entity { @Id @GeneratedValue(strategy = IDENTITY) private Long id;}IDENTITY 전략을 사용하면, MySQL의 Auto Increment 생성 전략으로 ID를 생성할 수 있다.그 외에 TABLE, SEQUENCE, UUID, AUTO 의 전략으로 ID를 설계할 수 있다. 하지만 Auto Increment 전략을 사용하면, 기본적으로 data가 새롭게 생성될 때 id가 1씩 증가하기 때문에..

Spring 2024.06.13

[Smeem] Presentation Layer <-> Application Layer DTO 리팩토링

Smeem 프로젝트를 하면서 경험했던 부분을 작성한 포스트입니다. Layered Architecture에서 Presentation Layer는 클라이언트로 부터 요청을 받아, 하위 계층(Application Layer)에 전달하고 하위 계층으로 부터 전달받은 응답 값을 클라이언트에게 응답해주는 Layer이다. Project를 하면서 기본적으로 클라이언트에서 Request Body가 존재하는 API의 경우에는 아래 코드와 같이 DTO 클래스를 생성하고, Controller에서 @RequestBody 어노테이션을 사용하여 해당 객체를 Service에 그대로 넘겨주는 형태로 개발을 해왔었다. @PostMapping("/member") public ApiResponse saveMember(@RequestBody..

Spring 2024.03.22

[Spring] RestDocs 기반으로 API 문서 작성해보기

보통 Swagger를 작성하여 API 문서를 많이 작성했는데, Controller의 Test를 작성하고 작성한 Test를 기반으로 API 문서를 만들어주는 RestDocs에 대해서 공부해보고 API 문서를 작성해봤다. https://docs.spring.io/spring-restdocs/docs/current/reference/htmlsingle/ Spring REST Docs Document RESTful services by combining hand-written documentation with auto-generated snippets produced with Spring MVC Test or WebTestClient. docs.spring.io 해당 공식문서 기반으로 RestDocs를 적용했다..

Spring 2024.03.16

[Study] Test Code Study 정리 (1)

무럭무럭 Test Code 스터디 내용을 정리하는 글. Test의 중요성에 대해서는 느껴왔었지만, 프로젝트를 하면서 Test Code에 많이 소홀했다. 여러가지가 이유가 있지만 그 중에 하나로 Test Code 짜는 습관이 잡혀있지 않은 것 때문이라고 생각했다. 조금 더 관성처럼 Test하는 습관을 기르는 것이 중요하다고 생각했다.스터디 목표쉬운 Test Code를 많이 짜보면서, Test Code를 짜는 습관을 만들어가기.수능 수학으..

Spring 2024.02.27

[Spring] AWS EC2에 Spring Boot Project 배포하기.

SOPT 서버파트 세미나에서 진행했던 내용 요약 정리본입니다. Ch 0. Intro 벌써! 4주차 세미나 입니다. 오늘은 AWS에 대해서 알아보고, EC2를 이용하여 배포하는 시간을 가져보겠습니다. 3차 세미나까지 저희가 설계한 서버 어플리케이션은 전부 로컬에서 실행되고 있었습니다! 따라서 실제 서비스를 운영하려면, 구축한 서버 어플리케이션을 다른 사람들이 이용할 수 있게 해야합니다! 배포 할 때는 크게 두 가지 선택지가 있습니다. 클라우드(Cloud) , 온 프레미스(On-Premise) 두 가지인데요! 저희는 이 중에 클라우드에 대해서 알아보겠습니다. CH 01. AWS (Amazon Web Service) AWS는 클라우드 분야에서 점유율 1위를 달리고 있는 클라우드 서비스 회사입니다. 그럼 클라우..

Spring 2023.06.05

[Spring Boot] Spring Boot로 HTTP API 설계하기

계층 설계 서버에 모든 로직이 한 class안에 들어있으면, 개발이 진행됨에 따라 class 안에 자연스럽게 code의 양이 많아진다. 따라서 한 객체에게 많은 책임이 부여되기 때문에, 객체지향의 원칙에서 벗어나게 된다. 견고한 서버 설계를 위해서 보통 계층을 나눠서 서버를 설계한다. 아래 예제에서 Controller, Service, Domain, Repository 계층으로 나눠서 설계했다. JPA (Java Persistence Api) JPA는 Java 표준 ORM이다. Node.js의 경우 sequelize, typeorm, prisma 등 다양한 ORM이 있었는데, Spring의 경우 JPA라는 표준 ORM이 있어서 개발하기에 훨씬 수월하다고 생각한다. JPA 설치 build.gradle에 아..

Spring 2023.05.10

[Spring] Spring Boot 프로젝트에서 Swagger로 API 문서 관리

Spring Boot 프로젝트를 하면서, API 문서를 정리하기 위해 Swagger를 사용하면서 알게 된 점들을 정리했다. Swagger는 대표적인 API 명세서 Tool이다. Notion 혹은 Postman 혹은 엑셀 등등… 을 이용해서 API 명세서를 관리하는 것 역시 좋지만, 이러한 API의 경우 API에 수정사항이 생겼을 때, 관리하기 어려운 점이 있습니다. 개발 후에 명세서 작성을 놓치는 경우도 있고, 개발한 code와 API 명세서가 다른 Human Error가 생기는 경우도 빈번하게 있습니다… (JSON key 하나만 잘못 써도 요청이 제대로 안들어가니까요..) 따라서 API 명세서를 code로 관리하면, 조금 더 편리하고 오류 없이 관리할 수 있습니다… 그래서 사용하는 것이 Swagger라..

Spring 2023.05.01

[Spring] H2 Database 설정

기본적으로 Local에서 개발 혹은 Test를 할 때 실제 사용하는 DB를 사용해도 좋지만, 빠르게 작업하기 위해서 Database를 분리하는 것이 좋다. H2는 Java 전용 In-Memory Database이다. 설치 Mac의 경우에는 brew를 이용하여 설치하면 된다. brew install h2 Window의 경우 https://www.h2database.com 에서 Database를 다운로드 받는다. 실행 Mac $ chmod 755 ./h2.sh $ ./h2.sh Window $ h2.bat 생성 Embedded 상태에서 jdbc:h2:~/데이터베이스이름 으로 한 번 생성한다. ~/데이터베이스이름.mv.db 파일이 생성되어 있는지 확인한다. jdbc:h2:tcp://localhost/~/데이터..

Spring 2023.04.20

[Spring] Lombok

Java, Spring에서 자주 사용하는 반복되는 code들을 Annotation으로 구현하여 간편하게 표현할 수 있도록 도와주는 라이브러리이다. 의존성 추가 dependencies { implementation 'org.projectlombok:lombok:1.18.22' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.projectlombok:lombok:1.18.22' } @Getter, @Setter Getter와 Setter를 @Getter, @Setter annotation을 사용하여 아래 코드와 같이 반복된 코드를 작성하지 않고, 쉽게 사용할 수..

Spring 2023.04.19
반응형