목록Spring Boot (37)
DevKim
간단한 게시글 저장의 service layer을 검증해보며 BDDMockito를 사용해보자. 1. 우선 필요한 Mock 객체들을 생성한다. @Mock - mock 객체를 생성한다 @InjectMocks - @Mock이 붙은 mock객체를 @InjectionMocks이 붙은 객체에 주입시킬 수 있다. 실무에서는 @InjectionMocks (Service) @Mock(DAO) 이런식으로 Service 목객체에 DAO 목객체를 주입시켜 사용한다고한다. @ExtendWith(MockitoExtension.class) class CommentServiceTest { @InjectMocks private HoneyService honeyService; @Mock private HoneyRepository hone..

🏃 게시글,댓글 연관관계 매핑 개선 🏃 지난 번에 연습삼아 구현했던 게시판 페이지를 개선해보려고한다. 만약 하나의 페이지에서 모든게 다 진행이되었다면, 큰 문제는 아니었겠지만 Multi page의 게시판이기 때문에 화면을 넘어갈 때, 해당 글의 id값을 어떻게 넘겨받을 수 있을지 고민이 참 많이 됐다. 요즘엔 SPA 방식을 많이 사용한다지만, 그렇다고해서 이걸 그냥 무시하고 넘어가버리기엔 찝찝하기도해서 찝찝했던 부분을 해결해보려고한다. 📌 1. 첫 번째 방법 URL 파씽해서 id값 얻어오기 + FK 역할을 할 임의의 Id값을 처음부터 Column에 넣어버리기 단순하지만 사람들이 가장 많이 쓰는 방법인 것 같다. (JPA 연관관계 매핑을 사용하지 않은 것과 같다.) 예를들어, boardDetail?id=1..

🏃 Mock을 이용한 단위 테스트 🏃 ✔ 단위 테스트 VS. 통합 테스트 - 단위 테스트 (Unit Test) 장점: 하나의 모듈이나 클래스에 대해 세밀한 부분까지 테스트 가능 단점: 모듈 간에 상호 작용 검증 못함 - 통합 테스트 (Integration Test) 장점: 두 개 이상의 모듈이 연결된 상태를 테스트 모듈 간의 연결에서 발생하는 에러 검증 가능 단점: 너무 무거움 지금까진, 항상 @SpringBootTest를 사용하여 통합 테스트만을 진행했었다. 사실 지금까지 큰 프로젝트는 진행한적이 없기에, 무겁다는 느낌은 많이 못 받았는데 실무에선 단위 테스트가 빠르게 테스트코드를 작성할 수 있으면서도 가장 효과적이어서 자주 쓰이는 것 같으니 미리 연습해두려고한다. 실습은 간단한 CRUD 기능을 만들고..
" 현재 주문과 회원은 N:1의 관계이고, 주문과 주소의 관계는 1:1관계이다. " - 현재 각각 다른 회원이 2개의 주문을 넣어놨고, 주문에서 회원과 주소를 조회하려고하는 상황이다. ( = 주문 + 배송정보 +회원 조회) - XToOne의 관계이므로 모두 지연로딩 관계로 설정해놓은 상태이다. *참고* 지연로딩은 조회시 영속성 컨텍스트에 있으면 SQL 실행 X 영컨에 없으면 SQL 실행 - 지연로딩 때문에 발생하는 성능 문제를 단계적으로 해결해보자. [ Case #1. ] 엔티티를 DTO로 변환해서 조회하기 : 어쩌면 제일 보편적으로 사용하고 있는 방법이다. @GetMapping("/api/orders") public void order01() { List orders = orderRepository.f..
@Valid를 사용하면, 객체 안에 들어오는 값에 대해 검증을 할 수 있다. ✔ 최신 springboot에서는 validation 을 따로 꼭 추가해주어야함 만약 이런 controller가 존재한다고 가정했을 때, @Valid 를 추가함으로써 MemberDto를 검증할 수 있다. @GetMapping("api/orders") public void Orders(@RequestBody @Valid MemberDto memberDto) { ... } 검증에 대한 추가적인 조건들은 따로 객체 안에 정의를 해두어야한다. public class MemberDto{ @NotNull private String name; @Email private String email; private String address; } ..

🏃CH.08 AWS EC2🏃 ✔ git clone -> pull 📌 Clone 받을 환경 만들기 EC2에 깃 설치 sudo yum install git 잘 설치되었나 확인해보자 git --version 프로젝트를 저장할 디렉토리를 생성 mkdir ~/app && mkdir ~/app/step1 이동 ~ cd ~/app/step1 git에 올린 프로젝트 clone git clone 주소 파일이 잘 복사되었나 확인 cd 레포명 ll 코드들이 잘 수행되는지 확인 ./gradlew test 누락된 파일이 있어서 다시 추가해준 뒤, pull 해줬다. 권한이 없다는 메시지가 뜬다면 아래를 입력해주고 다시 test를 해보자 chmod +x ./gradlew build successful이 나오면 성공!! ✔ 프로젝트..

🏃 CH.07 AWS RDS 🏃 ✔ DB 엔진 : MariaDB MySQL 대신 MariaDB를 사용해야하는 이유는 다음과 같다고한다. 1. 동일 하드웨어 사양으로 MySQL보다 향상된 성능 2. 다양한 기능 3. 다양한 스토리지 엔진 등등.. MySQL 에서 MariaDB 로 마이그레이션 해야할 10가지 이유 MySQL 에서 MariaDB 로 마이그레이션 해야할 10가지 이유 2015년 초 글, 아직까지 지켜봐야할 것 같지만:-) 1) MariaDB 개발이 좀 더 개방적이고 활발함 – MySQL 5.7 커밋 로그엔 컨트리뷰터들이 @oracle.com – xdhyix.wordpress.com 이러한 이유로 MariaDB 사용을 추천한다고한다. ✔ DB 인스턴스 생성 후, RDS 운영환경에 맞는 파라미터를..

🏃CH.06 AWS EC2🏃 ✔ 먼저, AWS에 대해 알아보자. 24시간 작동하는 서버에는 3가지 선택이 있다. 하나는 클라우드 서비스이고 나머지 둘은 호스팅서비스나 PC를 24시간 구동시키는 어마무시한 방법이있다. AWS는 클라우드 서비스에 속한다. 나머지 두개가 저렴하지만, 만약 특정 시간에만 트래픽이 몰린다면, 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다. 📌 클라우드 서비스 - 인터넷(클라우드)를 통해 서버,스토리지(파일 저장소), DB, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다. - 단순히 물리 장비를 대여하는 것이 아니고, 그 안에서 로그 관리, 네트워크 관리 등을 기본적으로 지원하고 있다. 📌 클라우드 서비스 형태 1. Infrastructure as a ..