본문 바로가기
반응형

전체 글149

AppointmentQueryService 클래스 - 테스트 코드 단일 클래스에 대해 짰으며 AppointmentQueryService 클래스에 대해 테스트 코드를 짜보았다. 데이터를 디비에 이미 넣어둔 상태로 테스트 코드를 작성을 진행하였다. 테스트코드는 given, when, then으로 나누어 작성하였다. given: 00이 주어짐 when: 00한 경우 then: 검증 @Test void findAllAppointmentEntityListTest() throws Exception { //given Doctor doctor = doctorRepository.findById(5L).get(); //when List appointments = appointmentRepository.findByDoctorId(doctor.getId()); //then assertTha.. 2022. 11. 10.
[MySQL] DATE_FORMAT() 사용 - 컬럼 created_at에서 연, 월 나눠서 조회 컬럼 created_at 에서 연, 월 조회가 필요할 때가 있다. DATE_FORMAT()을 이용한다. 테이블 user_info created_at: LocalDateTime dtype: Member, Doctor select created_at, dtype from user_info; DATE_FORMAT() 이용 select DATE_FORMAT(created_at, '%y') YEAR, DATE_FORMAT(created_at, '%m') MONTH, dtype from user_info; 2022. 11. 5.
[JPA] OneToMany 관계일 때 컬렉션 조회를 통한 쿼리성능개선 다음은 닥터 질문 답변 게시판 상황이다. 멤버는 질문을 할 수 있고 닥터는 답변을 달 수 있다. 질문과 답변은 OneToMany 관계이다. 여기서 문제는 질문 하나에 대해서 답변이 N개가 달린다면 N번의 쿼리가 나간다는 점이다. 답변 N개를 한번에 조회할 수 있는 방법이 있을까? 컬렉션 조회를 이용하면 된다. - 닥터 질문 답변 게시판 답변 쿼리는 다음과 같다. 문제점: 답변 쿼리를 조회하면 답변한 닥터 쿼리가 3번 나가게 된다. 질문 하나에 대해서 닥터 3명이 답변을 단 상황에서 OneToMany이므로 쿼리가 3번 나갔다. 이러면 성능에 문제가 생기기에 컬렉션 조회를 이용한다. 해결방안: application.yml 파일을 수정하자. jpa: hibernate: ddl-auto: update # 어플리.. 2022. 11. 5.
[디자인 패턴] CQS(Command Query Separation) Pattern CQS(Command Query Separation) Pattern은 소프트웨어 디자인 패턴 중 하나이다. 다음과 같은 이유로 나눈다. Command: 객체의 내부 상태를 바꾼다.(생성, 수정, 삭제) Query: 객체의 값만 반환한다.(조회) 예시로 Product 도메인에 대해서 서비스를 ProductCommandService, ProductQueryService로 나눈다. 예시 코드 ProductCommandService 어노테이션 @Transactional Command: 객체의 내부 상태를 바꾼다.(생성, 수정, 삭제) @Service @Transactional @RequiredArgsConstructor public class ProductCommandService { private final .. 2022. 11. 3.
[프로그래머스] Lv.0 삼각형의 완성조건 (2) * 순서 - 문제 - 문제설명 - 문제풀이 - 최종코드 - 문제 - 문제설명 세 개로 삼각형을 만들려고 한다. 두변의 길이가 주어질 때 나머지 한변을 구한다. 나머지 한변이 될 수 있는 정수의 개수를 구하는 문제이다. 조건: 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다. - 문제풀이 1. 나머지 한변의 길이의 범위는 두 변의 길이의 합까지로 한다.(나머지 한변의 길이가 가장 길 경우일 때 나머지 한 변의 길이가 최대값이기 때문) 2. a, b, c 세 변의 길이 중에서 한 변의 길이가 가장 클 경우에 대해 분기를 나눈다. 3. 조건을 적용한다.(조건: 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다.) 4. Set을 이용하여 나머지 한변의 길이의 중복을 막는다. 1. 나머.. 2022. 10. 28.
[프로그래머스] Lv.0 안전지대 [JAVA] * 순서 - 문제 - 문제설명 - 문제풀이 - 최종코드 - 문제 - 문제설명: 지뢰가 있는 지역은 1로 표시되며 위험지역이다.. 지뢰가 있는 지역으로부터 왼쪽, 오른쪽, 위, 아래, 왼쪽위, 오른쪽위, 왼쪽아래, 오른쪽아래는 위험지역이다. 안전지역의 개수를 리턴한다. - 문제풀이: 1. 1표시가 있는 지뢰가 있는 지역을 찾는다. 2. 지뢰를 찾았으면 왼쪽, 오른쪽, 위, 아래, 왼쪽위, 오른쪽위, 왼쪽아래, 오른쪽아래를 2로 표시한다.(위험지역이라는 임의표시) 3. 안전지역인 0개수를 구한다. 1. 1표시가 있는 지뢰가 있는 지역을 찾는다. //1찾기 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if(board[i][j] == 1) { che.. 2022. 10. 27.
[LeetCode] 2446. Determine if Two Events Have Conflict​ * 순서 - 문제 - 문제설명 - 문제풀이 - 최종코드 - 문제 - 문제설명: 두 이벤트(시작 시간, 끝나는 시간)이 배열로 주어졌을 때 겹치는 시간이 있는지 없는지를 구하시오 - 문제풀이: 1. 각각의 String 이벤트를 LocalTime으로 parse한다.(parseStringToLocalTime() 이용) 2. 시간이 겹치는지 isBefore(), isAfter() 이용 3. 시간이 같을 경우 equals() 이용 haveConflict(): 시간이 겹치는지, 시간이 같은지 체크하는 메서드 public static boolean haveConflict(String[] event1, String[] event2) { LocalTime localTime1Start = parseStringToLocal.. 2022. 10. 23.
h2 데이터베이스 모든 테이블 삭제 application.yml에서 ddl-auto: create를 해도 h2 데이터베이스 목록에는 테이블이 여전히 남아있다. 모든 테이블을 삭제하고 싶을때 아래 쿼리를 실행한다. drop all objects 2022. 10. 18.

반응형
반응형