전체 글
-
하이버네이트 자동 키 생성 전략BackEnd(Java)/Spring Data JPA 2022. 3. 24. 12:49
현재 JPA(Hibernate) + Mysql로 연동하는 프로젝트를 진행 하던 중 아래의 그림 1을 보고 왜 저 테이블을 만들지?? 라는것이 궁금해서 구글링을 통해찾아보게 되었다. DB는 테이블의 기본 키(PK)를 선정 할 때 두가지 방법이 있는데, 자연키(ex. 주민등록번호, 이메일 등) 와 대체키(의미없는 일련의 번호)로 구성된다. JPA는 테이블을 생성할 때 기본 키를 대체키로 생성한다. (사용법은 아래 소스코드 참조) @Entity @Getter @Setter public class test{ @Id @GeneratedValue //@GeneratedValue == @GeneratedValue(strategy = GenerationType.Auto) private int id; } 테이블 생성전략..
-
[2021 Dev-Matching] 다단계 칫솔 판매PS/Programmers 2022. 3. 23. 20:12
[문제 접근법] - 맵을 이용 하여 그래프를 만든 후 아래에서부터 위로 탐색하면서(ex. young -> edward -> mary -> center) 비용 정산을 한다. 최적화를 위해 분배되는 금액(이익금의 10%)이 0보다 클 때만 비용 정산을 하도록 접근하였다. https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr [구현 1] 1. 그래프를 만든다 2. seller의 금액을 그룹화시킨다. 3. 깊이 우선..
-
[2021 Dev-Matching] 행렬 테두리 회전하기PS/Programmers 2022. 3. 23. 13:53
[문제 접근법] - 실제 2차원 배열에 대한 구현 능력을 물어보는 문제인거 같다. 나는 큐를 활용하여 시계방향으로 배열을 옮기는 로직을 구현 하였다. 맨위 - 오른쪽 - 맨아래 - 맨왼쪽 순으로 배열을 옮기면서 진행하였음 https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr [구현 1] 1. 2차원 행렬을 만든다 2. 위 - 오른쪽 - 아래 - 왼쪽 순으로 배열을 옮기는 과정을 거침(큐에 이전값..
-
영속성 컨텍스트와 Transaction의 관계BackEnd(Java)/Spring Data JPA 2022. 3. 23. 13:51
프로젝트를 진행하면서 영속성 콘텍스트를 정확히 알고 쓰지 못해 생긴 이슈에 대해서 정리하고자 한다. 결론부터 말하자면, 영속성 컨텍스트와 트랜잭션 생존 범위가 동일하고, 트랜잭션이 같으면 같은 영속성 컨텍스트를 사용한다. 그러나 트랜잭션이 다르면 다른 영속성 컨텍스트를 사용하게 된다(그림 1참고) 이 개념을 이해하고 꼭 개발하도록 하자!!!!!!!(정확히 이해를 하지 못한채 API 서버 개발할 때 잦은 로직 변경이 있었음 ㅠㅠ) 이슈 - 하나의 트랜잭션이 끝난 후 그 값을 다른 트랜잭션에서 연산(persist, remove... 등)하려고 하면 영속화되지 않은 엔티티를 어떠한 행위를 하려고 해서 오류가 뜨게 된다. 해결방법 다른 트랜잭션에서 연산하기 전에 em.find를 통해 영속성 컨텍스트에서 가져와서..
-
@NotNull, @NotEmpty, @NotBlank 차이점BackEnd(Java)/Spring Boot 2022. 3. 23. 13:50
프로젝트 진행하면서 @NotNull, @NotEmpty, @NotBlank를 사용하다가 3가지의 차이점이 헷갈려서 정리하려고 한다. - @NotNull : Null만 허용하지 않는다. 공백 값을 허용한다(ex. "", " ") - @NotEmpty : Null과 "" 둘다 허용하지 않는다. " "는 허용이 된다 - @NotBlank : Null과 "", " " 모두 허용하지 않는다. 3개중에서 가장 유효성 검사가 엄격하다. 정리하자면 Null 허용 "" 허용 " " 허용 NotNull X O O NotEmpty X X O NotBlank X X X
-
완주하지 못한 선수PS/Programmers 2022. 3. 23. 13:45
https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr [알고리즘 접근 방법] 1. 해쉬 접근법(효율성 평균 41ms=0.041초) -해쉬에 먼저 참가자들을 다 넣는다 -참가자들 중에서 완주자 확인 -미완 주자 출력 //효율성 평균 41ms string solution(vector participant, vector completion) { unordered_map map; //일단 맵에 모든 참..