본문 바로가기
반응형

분류 전체보기156

[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.
6. 메시지와 인터페이스 - 2 코드스피츠 4강 내용 ❗핵심내용: OCP와 제네릭을 통한 해결 if + instanceof 코드를 클라이언트 방향으로 밀어내야함. 클라이언트를 여러개 만들고 매핑해야함 클라이언트층은 서비스를 다룸 객체설계를 시키는 식으로 만들면 되는데 물어보는 식으로 만들기 때문에 안되는거임 →제일 좋은 것은 시키는것. 그래야 영향을 안받음. LSP(리스코프 치환 원칙): 자식형을 부모형으로 완전히 대체할 수 있다. 문제점 원인: 성급한 추상화 기존보다 메서드 개수가 줄어든다면 괜찮다. 기존보다 메서드가 늘어날 경우 문제가 생김 다운캐스팅을 사용하면 안됨 다운캐스팅: OCP 위반을 일으킴 →제너릭을 통해 해결하자 설계 상에서 LSP, OCP를 지키려고 하자 → if + instanceof 를 쓰지 말자. 문제: 추상형에.. 2022. 10. 14.

반응형
반응형