본문 바로가기

공부

(113)
24.02.21 오늘은 테이블과 객체 매핑, 컬럼 스키마 매핑에 대해 배워보자. 우선 테이블 객체 매핑이다. @Entity 어노테이션이 붙은 클래스만 JPA는 Entity로서 관리 하게 됨. 이 어노테이션이 붙지 않는 데이터는 JPA관리 밖. 이중 중요하게 다뤘던 매핑 전략에 대해 정리해보자. @Id @GeneratedValue Entity의 Primary Key값을 설정할 때 사용한다.이 어노테이션을 달아주면 코드단에서 Id값을 넣어주지 않으면 알아서 Id를 넣어준다. 이때 세가지 전략이 존재함 IDENTITY, SEQUENCE , TABLE [IDENTITY] 이 전략은 현재 연결된 DB의 ID 생성 전략을 따르는 것. MySQL은 AutoIncrement임. 따라서 자동으로 1씩 증가시켜줌 Oracle이나 H2는 ..
[프로그래머스] 뒤에있는 큰 수 찾기 //100만개의 원소를 for문을 돌면서 탐색하는건 무조건 시간초과임 //sort도 못함 각 인자의 순서로 해야함. //최악의 경우가 맨 마지막에 가장 큰수가 있을 경우 100만개의 행을 다 비교하면서 돌아야됨 //적합한 자료구조가 있나..? 큐? //어떻게 쓸건데? 큐는 못씀 중간에 껴있는 값들을 비교해야 하는데 그걸 못하니까 //완전 탐색? 그건 필요 없을거 같은데 for문과 다르지 않잖아 //스택 : 원소들을 쌓고 새로 들어온 값이 마지막 원소보다 커? 팝(새로운 원소값으로) 다시 비교해서 커? 팝 //새로운 원소는 다시 스택에 넣고 //그럼 이걸 인덱스 관리를 어떻게 할건데?? 팝할 때 그 인덱스는 어떻게 알지?? //아 인덱스를 넣어준다? 스택에다가??? //스택에 인덱스를 넣어줘 //비교할 땐..
24.02.20 어제에 이어 JPA 강의를 들으면서 내가 생각했던 의문점이 풀림! JPA를 이해하려면 영속성에 대한 이해가 필요함. 영속성이란 자바 App과 DB를 연결시켜주는 통로 같은 것. 자바의 객체를 DB에 넣을 때 영속성 상태가 된 상태에서 넣어주는것! 자바의 Entity는 영속성 컨텍스트 안에 들어가지 않으면 아직 DB과 관계없는 그냥 순수한 객체임. 영속성 컨텍스트에 들어가게되면 이제 이 객체는 DB와 연관을 맺게 되는 것. 그럼 영속성은 어떻게 관리되는지? 바로 EntityManager의 persist()메서드를 이용해 객체를 영속성 컨텍스트에넣어준다. 또한 find를 해서 DB로부터 조회한 데이터도 영속성 컨텍스트 안에 들어가 영속 상태로 들어감! 이렇게 영속성이 되면 주는 이점은 다음과 같음 1. 1차..
24.02.19 JPA 강의 듣기 시작! 우선 JPA를 왜쓰는지에 대해 알아보자. 우리는 객체지향 언어를 다루고 있다. 그리고 그 객체를 저장하고 싶다. 하지만 RDB에는 객체지향의 핵심 가치인 상속을 반영하지 않는다. 물론 연관관계를 가지고 있지만 그렇다고 상속과 똑같이 작동하지 않는다. 예를 들어보자. 자바의 컬렉션에서 그래프 탐색을 할 때 그냥 탐색을 하면 된다. ex) member.getA().getB().getC(); 하지만 테이블은 이런식으로 조회할 때 어려움이 있다. JOIN문을 이용할 때 처음 실행하는 쿼리문에 따라 탐색 범위가 결정된다. JPA가 아닌 기존의 JDBC와 같은 방식을 이용해 객체를 찾아오면 같은 객체를 조회한다고 해도 SELECT를 이용해 가져올 때 각 객체를 다르게 가져오게 된다. Str..
24.02.15 프로그래머스 피로도 문제 풀다가 도저히 내 지식으로는 풀 수 없다... 이건 그냥 모든 경우의 수를 다 돌아보고? 그중 가장 좋은 케이스를 가져와야 하는데.... 이거 모든 케이스를 어떻게 돌려야 하지???? 한 한시간 들여다보다가 도저히 모르겠어서 답지 봄! [완전 탐색] 가능한 모든 경우의 수를 다 시도해 답을 찾는 방법 정확하고 확실하게 답을 찾을 수는 있지만, 시간이 오래 걸린다. 모든 경우의 수를 구하는 문제 같은 부분에서 많이 사용되는 알고리즘 조합, 중복 조합, 순열, 중복 순열 1부터 n까지의 수를 모두 더하기 난수에서 배열에서 특정한 수 찾기 등 기본적으로 스택과 큐로 구현을 하게 되는데, 이를 재귀 함수로 표현할 수 있음. class Solution { public int answer;..
24.02.13 조건 유저로 탑스터 조회시 쿼리 1. 탑스터 조회 from topster where user_id 2. 유저 조회 from user where user_id 3. 탑스터 앨범 조회 from topster_album where topster_id 유저 하나에 딸린 탑스터 갯수 28 탑스터에 딸린 앨범 갯수 9(앨범이 123으로 동일한게 3개씩 들어감) 총 쿼리 갯수 30 탑스터 1, 유저 1, 탑스터 앨범 조회 28 배치 사이즈 50 걸때 1. 탑스터 조회 from topster where user_id 2. 유저 조회 from user where user_id 3. 탑스터 앨범 조회 from topster_album where topster_id 유저 하나에 딸린 탑스터 갯수 28 총 쿼리 갯수 3 탑스..
아키텍쳐 고민 최종 프로젝트는 3레이어드 아키택쳐를 이용한 프로젝트를 진행했다 발단(순환 참조를 해결하자) Controller, Service, Repository 계층을 이용했다. 이때 우리는 다른 도메인의 Entity를 찾아와야할 때 해당 도메인의 Service에서 예외처리까지 마쳐서 Entity를 얻는 메서드를 public으로 열어두도록 컨벤션을 정했다. 여기에는 장/단점이 존재한다. 장점은 - 코드 중복을 줄일 수 있다. Repository에서 Optional로 Entity를 가져올 때 예외처리를 해줘야 한다. 이를 각 도메인에서 만들어서 public으로 열어두면 다른 도메인의 서비스에서 사용할 수 있어 코드중복을 피할 수 있다. 단점은 - Service끼리 참조를 하기 때문에 순환 참조에 걸릴 수 있다. 우리..
24.02.05 난리났다. 발표 좀 만만하게 봤다가 진짜 큰코 다쳤다... 아니 나 중간발표때도 했었고, 뭔가 좀 진짜 방심했다. 발표데모를 찍었는데 진짜 그냥 개~~~절었다. 그냥 완전 정리가 하나도 안됐다. ㅠㅠㅠㅠ 진짜 두시까지 데모 찍어서 올려야 했는데 1시반까지 찍다가 계속 절어서 결국 그나마 11시 쯤에 찍었던걸 올렸는데... 이것도 사실 맘에 들진 않는다... 발표 대본을 좀 더 다듬고 다시 연습해보자. 원래 대본 잘 안만들었었는데, 이번엔 시간제한도 생각보다 너무 짧고, 다뤄야할 내용도 많다보니 뭔가 잘 정돈이 안되면 횡설수설하게 된다. 그리고 이제 다시 이력서를 쓰면서 다시 강의를 좀 듣고 싶은데 인프런에서 강의를 하나 살지 고민중!! 설날 특가 안뜨려나?? 설 특가 뜨면 바로 강의 하나 사서 들어야겠따..
24.02.02 요즘 하도 문서화 작업을 많이 하다보니까 TIL에 소홀했다. 이번총망라한 TIL을 작성해보자. 이번주 우리는 알림 기능을 완성했다. SSE를 이용해 클라이언트가 자신의 id로 구독을 하고, 이벤트가 발생하면, 관련된 id를 갖는 클라이언트는 해당 이벤트를 가져간다. 하지만 알림 기능은 프론트 작업이 추가적으로 필요해서 우선 운영서버에 도입되는건 중지했다. 그리고 우리가 했던 것은 쿼리 최적화. 탑스터 GET요청 한번에 너무 많은 쿼리가 발생한다. 따라서 부하 테스트시 서버가 못버티는 것을 확인했다. 우리의 분석은 탑스터는 매팽된 연관관계가 너무 많아 N+1 현상이 일어날것이다. 우리는 BATCH SIZE를 50으로 걸어서 N+1 현상을 막았다. 또한 페이지네이션을 도입해 한번에 너무 많은 데이터를 불러올..
24.01.26 튜터님 1:1 면담 기록 튜)지금 어디에 중점을 두고 있는지? 프로젝트? 개인 취업 준비? 나)지금은 우선 프로젝트를 우선순위에 두고있다. 우리 프로젝트가 아직 기능 구현이 안된 부분이 있다. 튜) 결국 지금 잘 프로젝트를 잘 가져가려면 이력서게 어떻게 적힐지를 생각해야함. 반대로 이력서에 어떻게 쓰일지 생각하고 기능을 구현하는것도 좋은 방법일 것. 알림은 어떻게 구현할지? 프론트에서? 알림 센터를 사용할거라면, 알림 메세지를 보관해야함. 알림 메세지 DB에 저장해라. 튜)알고리즘은 공부중? 나) 스터디중이다. 화수목 하고있다. 튜)파이썬 하는지? 나)초창기에 물어봤는데 우선 다른 언어 쓸 생각하지 말라고 배웠다. 튜) 그게 맞다. 그런데 이제 자바 익숙하지 않은지? 이제 파이썬 쓴다고 자바 헷갈리는 단..