# ManyToMany
@ManyToMany
Intro >회원 기능이 개발됨에 따라 각 회원 엔티티에 장바구니와 찜목록을 추가할수 있었다. 이를 구현하다가 어떻게 매핑할까 생각해본 내용을 포스팅 한다. 관계 > 회원과 상품간의 장바구니 , 찜목록 을 구현하기 위한 관계를 생각해보자. 여러명의 회원이 존재하며 여러 상품이 존재한다. 한명의 회원에 여러 상품이 담길수도 있고 하나의 상품이 여러 회원의 찜목록과 장바구니에 담길수도 있다. @ManyToMany 이다. @ManyToMany > @ManyToMany를 사용하면 JPA 의 구현체인 hibernate 가 두 객체의 중간 테이블을 자동 생성하여 처리하게 된다. 자동으로 무언가 처리해줌 은 좋은거 아닌가 ? 싶지만 그 중간 테이블의 내용을 우리가 마음대로 다룰수가 없다. 생성된 중간 테이블에 우리에게 필요한 비지니스 로직 정보를 넣을수 없다면 아무 쓸모가 없어진다. Solution > hibernate 가 생성해주는 중간 테이블을 우리가 직접 만드는 방법이

Techit 14th 2nd
Algorithm 줄 세우기 2252번: 줄 세우기 문제 N명의 학생들을 키 순서대로 줄을 세우려고 한다. 각 학생의 키를 직접 재서 정렬하면 간단하겠지만, 마땅한 방법이 없어서 두 학생의 키를 비교하는 방법을 사용하기로 하였다. 그나마도 모든 학생들을 다 비교해 본 것이 아니고, 일부 학생들의 키만을 비교해 보았다. 일부 학생들의 키를 비교한 결과가 주어졌을 때, 줄을 세우는 프로그램을 작성하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이다. 학생들의 번호는 1번부터 N번이다. 출력 첫째 줄에 학생들을 앞에서부터 줄을 세운 결과를 출력한다. 답이 여러 가지인

typeorm EntityMetadata
typeorm EntityMetadata (1) entity의 컬럼명이 들어있는 array를 얻을 수 있다. UpdatePostDto에서 tags는 별도 처리가 필요한데 if i=="tags" 같이 직접 string으로 해두는건 수정에 좋지않으니까 일단 column명을 찾아봤는데 잘 모르겠다."tags"는 상수 파일로 두는게 최선같기도? 적용하면 어떻게 적용했는지 올리겠다. 올림 this.markdownrepo.update(id, updateobject) 이 save와 다르게 update query만 날린다해서 update를 쓰려고 했고 그래서 updateobject을 만들면서 위의(1)과 같은 고민을 했는데 many-many delete를 save로 하는 듯해서 그냥 save를 사용했다. many-many는 매번 통계 query로 tag 쓰이는지 확인하고 지워야하는데 매번 하는건 별로인 것 같다. 이런류는 나중에 일정 시간마다
[JPA] Entity 연관관계 매핑
다대일 [N:1] : @ManyToOne 일대다 [1:N] : @OneToMany 일대일 [1:1] : @OneToOne 다대다 [N:M] : @ManyToMany 부모 엔티티 N 자식 엔티티 M

[Nest, Typeorm] ManyToMany 관계 개선 #3 (feat. String Unique Key를 통한 코드 개선 )
시작하기에 앞서 이번 포스팅은 이전 포스팅 "ManyToMany 관계 개선 #1, #2 (feat. @ManyToMany를 사용할 경우)" 의 연장선에서 진행한다. 이전 포스팅 클릭 #1 ✔ [이전 포스팅 클릭 #2 ✔](https://velog.io/@from_numpy/Nest-Typeorm-ManyToMany-%EA%B4%80%EA%B3%84-%EA%B0%9C%EC%84%A0-2-feat.-ManyToMany%EC%97%86%E

[Nest, Typeorm] ManyToMany 관계 개선 #2 (feat. @ManyToMany없이 "다대다" 구현하기 )
시작하기에 앞서 먼저, 이번 포스팅은 이전 포스팅 "ManyToMany 관계 개선 #1 (feat. @ManyToMany를 사용할 경우)" 의 연장선에서 진행한다. 이전 포스팅 클릭 ✔ 꼭 이전 포스팅 글을 보고 이번 글을 읽는 것을 추천한다. (이해하기에 매끄럽습니다.) 이번 포스팅에선 이전에 다루었던 @ManyToMany 를 이용한 Role과 Permission의 "다대다[N:M]" 관계를 @ManyToMany 데코레이터를 사용하지 않고 나타내보는 과정을 가져보도록 한다.

[Nest, Typeorm] ManyToMany 관계 개선 #1 (feat. @ManyToMany를 사용할 경우)
💥 시작하기에 앞서 역할(Role)과 권한(Permission)의 관계를 '다대다(ManyToMany)' 로 join함으로써 일어났던 문제와 그에대한 개선을 중심으로 작성해보고자 한다. 릴레이션 관계가 없는 경우, 다대일의 경우, 일대다의 경우와는 다르게 "다대다(N:M)"의 경우에서 생성한 Role객체의 릴레이션 프로퍼티를 수정하는 과정에서 문제가 발생하였다. 아래에서 코드를 토대로 발생한 에러와 해결과정을 기술하고자 한다. 그전에 앞서 이번 포스팅을 통해 어떤것을 해결하고 알아갈 수 있는지 간단하게 알아보자. > ManyToMany관계의 컬럼을 수정하는 과정에서 발생한 에러를 알아본다. 에러를 해결하는 방법을 크게 두 가지의 코드방법으로 알아본다. ( 각 방식의 특징과 개선을 통한 전개 ) ManyToMany를 사용하였을때의 문제점을 파악하고, ManyToOne과 OneToMany로써 분리하여 구현할 수 있
장고 심화 강의 4주차
1. restul하게 api 설계해보기 게시글&댓글 관련 기초 api 설계를 해보자! - urls.py - views.py 게시글 리스트 보여주기, 게시글 작성하기, 게시글 상세페이지 보여주기, 게시글 상세페이지에서 수정하기, 게시글 상세페이지에서 삭제하기, 댓글 전체 보여주기, 댓글 작성하기, 댓글 수정하기, 댓글 삭제하기, 좋아요에 대한 api들을 작성!! 2. 게시글의 모델 설계 여기서 upload_to='%Y/%m/' 는 사용자가 사진을 업로드 하였을 때 미디어 폴더 안에 년/월 폴더를 자동으로 생성하여 그 안에 사진을 보관한다. 3. 미디어 파일과 스태틱 파일에 대해 장고 스테틱 관련 자료 : https://docs.djangoproject.com/en/4.1/

엔티티 설계 및 관계 매핑
참고 ERD 기호: https://mjn5027.tistory.com/43 점선과 실선: https://sddev.tistory.com/81 엔티티 관계 매핑 참조링크: https://victorydntmd.tistory.com/208 참조링크2: https://catsbi.oopy.io/f3204fd9-954c-44d7-ab18-2ca56000c5e5 JPA는 연관관계에 있는 상대 테이블의 PK를 멤버변수로 갖지 않고, 엔티티 객체 자체를 통째로 참조 예시 용어 관계의 방향 단방향관계와 양방향관계가 있음
N:M 다대다 관계 매핑, 어떻게 풀어낼 것인가?
Member와 StudyRoom의 관계 매핑을 지으려고 생각하다보니, 두 엔티티의 관계는 일대다, 다대일 관계가 아니라 다대다임을 알게 되었다. 물론 @ManyToMany를 써서 두 엔티티를 매핑하는 것이 이론적으로 불가능한 것은 아니다.(오히려 편리해보이기도 한다.) 하지만 여기에는 고려할 사항이 몇 가지 더 있었다. 💡 ManyToMany 적용의 실질적 문제들 객체는 Collection을 사용해서 객체만 2개 있어도 다대다 매핑이 가능하다. 하지만 관계형 데이터 베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다. 편리해보이긴 해도, 중간 테이블이 숨겨져 있어 쿼리가 나가는 것을 예측하기 어렵다. (나중에라도) 필드를 추가적으로 넣을 수 없다. 예를 들어, MemberStudyRoom 엔티티를 만들게 되면 해당 엔티티에 필드값을 추가적으로 넣을 수가 있는데 ManyToMany 관계에서는 그렇게 할 수가 없어서 비즈니스가 커지고 새로운 로직들

@ManyToMany ?? _실전 적용하기
"여러 초대를 받고 싶어요" 모아부자 서비스 개발 중 처음 기획하고 ERD를 설계했던 부분에서 수정해야 할 부분이 생겼다. 바로 목표에 대한 초대를 여러 개 받고 싶다는 것이다. 처음에는 초대하고, 수락 대기 상태만 있으면 될 것이라고 생각했었다. 그래서 'isaccepted' 라는 이름으로 'ChallengeGoal', 'GroupGoal' 두 테이블에 넣어두었다. 그런데 구현하면서 팀원들과 이야기를 나누다 보니, 한 가지 목표만 진행하는 것은 의도가 좋지만 초대까지 하나만 받는 것은 기능 부족과 같이 느껴진다는 것이다. 백엔드 개발자들도 이와 같은 생각에 동의하게 되었고, DB에 대해서 다시 생각해보게 되었다. 일대다, 다대일 관계로만 작업하고자 했기에 방법이 없을까 여러
🌼 BE TIL Day 20 0408
⬇️ Main Note https://docs.google.com/document/d/1c3LEm0IKmI6y--c3nGdjaxAmZISq7eHd3TfjwD-M1fc/edit 🌿 ManyToMany Today, I'm trying to make productTags API. This one's in the format of manyToMany in database. productTags will get the input in the form of array. => productTags: ["#new","#hi"] tagsRepository should be made and linked with the product by using relations. ⬇️ Source code 🌿 Login Process Memory: Data are saved as variables, so when you shut down t
Django ManyToMany 필드 다루기
❓ 점프 투 장고를 공부 하던 중 Question모델에 있는 추천이 ManyToMany관계의 User모델로 되어 있어서, 이 값을 가져오는 방법에 대해 작성합니다. ManyToMany 관계란? 게시판 서비스를 사용해 봤다면 글 1개에 여러명이 추천할 수 있고, 반대로 1명이 여러 개의 글을 추천할 수 있다. 이런 경우를 모델의 다대다 ManyToMany관계 라고 한다. ManyToMany 값 가져오기 ManyToMany, OneToMany의 Methods 같은 이름의 메서드여도 각 관계(1:N, M:N)에 따라 다르게 동작 1:N 에서는 target 모델 객체만 사용가능 M:N에서는 관련된 두 객체에서 모두 사용 가능 add(), create, cremove(), clear(), set() add() 지정된 객체를 관련된 객체의 집합에 추가 이미
ManyToMany를 활용한 팔로우 기능 구현
파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 듣고 정리한 글입니다. 인스타그램에는 팔로우 기능이 있다. 이러한 팔로우는 유저와 유저같의 관계가 다대다로 구성이 된다. 특이한 점은 같은 User테이블 안에서 관계가 구성된다는 점이다. 장고의 ManyToMany 필드를 이용해서 이러한 팔로우 관계를 구현해본다. 모델 User 유저에 followerset, followingset을 추가해준다. follower_set: 유저가 팔로우 한 다른 유저 데이터(유저가 친구로 추가한 사람들) follower_set: 유저를 팔로우 한 다른 유저 데이터(유저를 친구로 추가한 사람들) 유저간의
cascade = CascadeType.ALL 를 사용할때 주의해야 할점
이번에 이틀을 이상하게 삽질한 이야기를 풀어보려한다... 프로젝트를 진행하다가 만난 에러 코드 에러를 해결하기위해 검색해보니, @OneToMany나 @ManyToMany일때 흔히 만나는 에러 이며, 부모 객체에 추가하는 자식 객체가 아직 DB에 저장되지 않아 발생하는 에러 라고 한다. 영속성 전이를 해야하기 때문에 해결 방법은 부모 객체에 cascade 옵션을 추가하면 된다고 한다. 그래서 부모 객체에 cascade = CascadeType.ALL 를 추가해줬다. 아 이젠 되겠징ㅎㅎ 구글 선생님과 함께하니 에러 껌이네ㅎㅎㅎ 했는데... 마주하게 된 또 다른 에러 이 에러가 뭔지 찾아보니.. cascade = CascadeType.ALL 이 코드때문에 오는 에러이니 제거해주면 된다고 한다 WHAT? 그래서 다시 지우면 위에 에러가 다시 넣으면 아래 에러가 나오는 이상한 현상을 발견했다.
ManyToMany를 이용한 태그 구현
파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 듣고 정리한 글입니다. > 인스타그램 서비스에서는 포스팅을 할 때 태그를 지원한다. django-taggit을 이용하면 이러한 태그 기능을 손쉽게 개발할 수 있다. (django-taggit은 실제 장고 코어 개발자도 참여중인 프로젝트라고 한다.) 본 포스팅에서는 학습을 목표로 하기에 ManyToMany필드를 이용해 태그 입력을 구현해본다. 사전 작업 instagram앱을 추가 후 settings에 앱을 추가하였다. 프로젝트 레이어의 urls.py에 instagram.urls를 추가하
csv 파일 upload.py 작성시 many to many field 작성법
CSV 파일이란? CSV 란 comma-separated values의 줄임말로 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일이다. 확장자는 .csv를 사용하고, MIME 형식은 text/csv입니다. 비슷한 포맷으로 탭으로 구분된 TSV 로 반각 스페이스로 구분하는 SSV 등이 있다. 호환되지 않는 포맷을 사용하는 프로그램 끼리 자료를 전달할 때 사용합니다. Split 하여 처리하기 편하다는 장점이 있다. 나는 구글의 스프레드시트를 이용해서 csv 파일을 공유하고 만들었다. upload.py 작성 이유 업로드 파일을 이용해서 csv 파일 데이터를 공유하고 각자 자신의 local 데이터인 mysql에 업데이트 하기 위함이다. 이러한 방식을 해결하기 위해서 업로드 파일을 작성한다. many to many field 작성법 
TypeORM Repository와 ManyToMany
Entity 정의 상품의 Entity 정의 해시태그의 Entity 정의 hashtag도 index 번호와 text만 가지게끔 간단하게 정의가 됐습니다. 이런 다대 다 관계에서, 우리는 중간에 1:n, m:1이 되도록 관계 테이블을 만들 수 있을 거에요. 상품과 해시 테이블 간 관계 Entity 정의 여기까지 정의가 되었다면 이제 상품과 해시태그의 관계도 정의가 된 셈입니다. TypeORM에서는 한 쪽에서만 관계를 지정해도 다른 한 쪽은 굳이 할 필요 없으니깐요. 하지만 보통 관계 테이블에서부터 시작하는 경우는 없으니, 반대쪽에서 OneToMany를 지정해줍시다. 이제 상품에서 productHasHashtag에 접근 가능하고, 이를 통해 hashtag에도 접근 가능합니다. OneToMany를 이용한 GET 하지만 이 단계에서는 Repository Pattern을 이용해서 hashtag와 함께 상품을 조회할 수 없습니다. 분명 상품이

[Django] ManyToMany
>Django ManyToManyField n:n(다대다) 관계의 데이터 테이블의 경우, Junction table을 생성해야 하는데, Junction table을 직접 django modles.py에서 새로운 class를 선언해주거나, ManyToManyField를 사용하는 방법이 있다. 2-1) ManyToManyField만을 사용하는 경우, 2-2) ManyToManyField에 related name을 지정하는 경우가 있다. 이때, ManyToManyField의 경우, 1)처럼 따로 class를 선언하여 테이블을 생성하지 않고도, data 입력만으로도 django에서 다대다 연결을 가능하게 해준다. >ManyToMany ManyToMa