본문 바로가기

전체 글

(165)
2주차 2일차 과제: 세상이 필요로 하는 것, 돈 벌 수 있는 방법 찾기 '세상이 필요로 하는 것'에 대해서 생각하고 아래의 질문에 답해보세요. 1. 최근에 감동받은 뉴스나 이야기 중에서, 세상이 꼭 알아야 할 내용은 무엇인가요? 위고비와 오젬픽이라는 비만 치료제가 비만 치료 뿐 아니라 뇌졸중이나 심혈관 질환까지 낮춘다는 뉴스를 보았다. 의학의 발전으로 질병들이 정복되어가는 것을 많은 분들이 알아야 한다고 생각한다. 2. 만약 당신이 대통령이 되어 하루를 지휘할 수 있다면, 어떤 일을 먼저 시작하실 건가요? (우선 나는 정치에 대해 잘 모른다...) 출산률 문제를 해결하기 위해서 다양한 이민 정책을 세울 것 같다. 3. 만약 마법사라면, 세상에서 바꾸고 싶은 한 가지는 무엇인가요? 한 가지가 아니어도 좋아요. 지구 온난화가 일어나지 않게 하고 싶다. 해수면을 낮추기 위해서 북..
2주차 1일차 과제 : 나의 능력, 관심사 파악하기 1일차 과제 : 나의 능력, 관심사 파악하기 '내가 잘하는 것'에 대해 생각하고 아래의 질문에 답해보세요. 1. 어린 시절부터 자주 들었던 칭찬들이 있다면 어떤 것일까요? 열정이 많다는 말을 많이 들었다. 칭찬인지 모르겠지만, 독하다는 말도 들었었다. 그 외에는 발표를 잘한다, 목소리가 좋다 등등.. 심야 라디오 DJ에 어울린다는 소리도 몇번 들었다. 약 4번 정도? 흔하지 않은 칭찬이니까 4번이면 많이 들어본게 아닐까.. 🤔 2. 친구들이 당신과 함께 공모전에 나가고 싶다고 한다면, 그 이유는 무엇일까요? 내 친구들이 나를 부른다면,. 개발자가 필요한 상황일 것 같다. 아니면 나와 팀을 해봤던 사람이라면,. 총대를 매고 일정이나 목표를 세우는 역할로 섭외했을 것 같다. 3. 만약 K-POP 아이돌 그룹..
옥토버 아카데미 1주차 과제 [1주차 과제] 📌 1. 옥토버 아카데미 프로그램에 참여하게 된 가장 큰 이유는 무엇인가요? 제가 최근 느꼈던 것들입니다. 1. 혼자 취준을 하다보니 외롭다. → 함께할 동료가 필요하다! 입에 거미줄이 생기고 있다. 🕸️ 2. 나에게 맞는 회사가 어떤 회사인지 모르겠다. → 처음엔 당연히 대기업을 가야겠다 생각했는데, 작은 회사에서 나만의 일을 하는게 더 적성에 맞는 것 같기도. 🤔 3. 선배님의 조언이 필요하다. → 먼저 취업을 하셨던 선배님들은 나와 비슷한 상황에서 어떤 선택을 하셨을까. 혼자 고민하는 것보다 조언을 듣고, 고치는게 더 빠른 길이 아닐까? 하지만 아는 선배님이..! 없다.. 슬프다. 🥲 그래서 `취준생들을 위한 자기 탐색 프로그램` 옥토버 아카데미를 보자마자 바로 신청했습니다. 위 고..
[SpringBoot] 연관관계의 주인이 필요한 이유 Summary:DB의 연관관계 방식은 JPA에서의 방식과 차이가 있음 : FK로 관리 vs 다른 엔티티 참조 이를 일치시키기 위해서 양방향 관계에서는 mappedBy로 연관관계의 주인을 설정해줘야함추가로, 객체의 관점에서 일관성을 유지하기 위해 주인 엔티티만 수정할 뿐 아니라 상대 엔티티도 수정할 필요 있음 → 연관관계 편의 메서드 📌 DB와 JPA의 연관관계 차이점데이터 베이스에서는 하나의 외래키를 이용해 두 테이블을 join 하는 구조JPA에서는 한 엔티티가 다른 엔티티를 참조하는 구조이런 JPA의 특성 때문에 '방향성'이 생기는 것 => 단방향과 양방향단방향 : 하나의 엔티티가 다른 엔티티를 참조하는 것양항뱡 : 각 엔티티가 서로의 엔티티를 참조하는 것 (단방향 2개)정리하자면,  DB : 외래키..
[SpringBoot] H2를 테스트용 DB로 사용하기 📌 테스트용 DB로서의 H2 DB관련 테스트에는 인메모리 방식의 DB인 H2가 많이 사용됨 1. 테스트 과정에서 데이터가 영향을 받을수 있으며 2. H2를 이용하면 더 빨리 테스트할 수 있기 때문 임베디드 H2를 사용하려면 의존성을 추가해줘야 함 # gradle dependencies { testRuntimeOnly 'com.h2database:h2' } 🤔 테스트 데이터를 롤백하면 굳이 H2를 쓸 이유가 없지 않나? 테스트 데이터가 롤백되어 DB에 남아있지 않더라도, auto increment로 지정한 ID가 증가되는 등의 문제가 발생할 수 있음 => 테스트용 DB 필요 참고 : https://jungguji.github.io/2020/07/05/H2-DB%EB%A5%BC-%EC%9D%B4%EC%9A%..
[SpringBoot] 테스트 코드 가독성 높이기 - BDDMockito, assertj 📌 테스트 코드 가독성 높이기 - BDD 적용💡 BDDBehavior-Driven Development(행위 주도 개발) 의 약자 이를 테스트에 적용시키면,  테스트 대상의 상태의 변화를 시나리오(given-when-then)을 기반으로 테스트하는 방법 💡 BDDMockito 테스트 코드가 시나리오(given-when-then)에 맞게 읽히도록 개선된 Mockito Framwork Mockito를 상속하며, 기능도 동일하지만 BDD 구조로 쉽게 읽힐 수 있도록 도와주는 것 💡 Mockito -> BDDMockito ① when을 given으로 Mockito 코드에서는 메서드와 그 행동을 설정할 때 when을 이용함 하지만 이 부분은 시나리오 상 given에 해당하므로  BDDMockito에서는 네..
[SpringBoot] @Mock vs @MockBean 📌 어떤 객체를 Mock 객체로 선언하는 방법 1️⃣ mock() PostRepository postRepository = mock(PostRepository.class); 2️⃣ @Mock @Mock private PostRepository postRespository; + @Mock을 쓰려면 테스트 클래스 위에 @ExtendWith(MockitoExtension.class)를 붙여줘야 함 ①과 ②는 내부적으로 동일하게 동작함. 무엇을 쓰는지는 방법의 차이 3️⃣ @MockBean @MockBean private PostRepository postRespository; 스프링 부트 테스트에서 제공하는 어노테이션 스프링 컨텍스트에 Mock 객체를 등록하고, 스프링 컨텍스트에 의해 @Autowired가 동..
[SpringBoot] 7.4.7 서비스 테스트 Summary : 서비스 테스트는 given - 레포지토리의 메소드가 특정 값을 리턴한다고 가정 (given / willReturn) when - 서비스의 특정 함수가 호출되었을 때 then - 해당하는 형식을 리턴하는지 (assertThat) 해당하는 레포지토리의 함수가 호출되었는지 (then(class).should(method)) 를 체크한다. 📌 서비스 레이어에 적합한 테스트 서비스는 외부 요인(서블렛, DB)을 배제하고 테스트할 수 있는 레이어 => 스프링 컨테이너를 제외하고 테스트하도록 서비스 레이어에 적합한 테스트 필요 => 유닛 테스트 📌 @ExtendWith 단위 테스트에 공통적으로 사용할 '확장 기능을 선언'해주는 역할 인자로 확장할 Extension을 지정 -> 주로 SpringExt..