Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: id를 사용하는 entity는 BaseEntity를 상속하도록 수정 #293

Merged
merged 2 commits into from
Sep 12, 2023

Conversation

thdwoqor
Copy link
Collaborator

@thdwoqor thdwoqor commented Sep 11, 2023

관련 이슈번호

작업 사항

id를 사용하는 entity는 BaseEntity를 상속하도록 수정


flyway 사용하면서 문제점

  1. sql 작성시 대소문자가 혼용되어서 사용된다.
  2. sql 파일명 규칙이 없다.
  3. sql 파일이 생성될때마다 주버전이 올라가버린다.

제안

1번 문제 해결

  1. sql 파일은 모두 소문자로 작성 2. sql 파일은 모두 소문자로 작성
  2. Mysql 에서 제공해주는 키워드는 대문자로 사용 그외 사용자들이 정의한 테이블 및 컬럼들은 소문자로 사용

(1번 2번 투표해주세요)

2,3번 문제 해결

flyway 명명 규칙 적용

  • 가장 앞에 주버전은 스프린트를 나타낸다 ( 지금 스플릿트 5라면 V5.1__hello.sql , V5.2__bye.sql 과 같이 작성 )
  • 테이블 변경과 관련된 작업만 SQL로 기록한다.
  • Description 네이밍 규칙을 따른다.
    image

Description 네이밍 규칙

하나의 테이블 생성
<VERSION>__create_table_<TABLE_NAME>.sql
하나의 테이블에 여러 컬럼을 수정
<VERSION>__update_column_from_<TABLE_NAME>.sql
하나의 테이블에 하나의 컬럼 생성
<VERSION>__create_column_<COLUMN_NAME>_from_<TABLE_NAME>.sql
하나의 테이블에 하나의 컬럼 삭제
<VERSION>__delete_column_<COLUMN_NAME>_from_<TABLE_NAME>.sql
하나의 테이블에 하나의 컬럼 수정
<VERSION>__update_column_<COLUMN_NAME>_from_<TABLE_NAME>.sql
여러 테이블에 하나의 컬럼 수정
<VERSION>__update_column_<COLUMN_NAME>.sql
다수의 테이블에 하나의 컬럼을 추가한 경우
<VERSION>__create_column_<COLUMN_NAME>.sql

지금 까지 SQL파일을 봤을때 해당 규칙에 모두 대입이 가능할것같습니다.
네이밍 규칙을 정하는것에 동의한다면 히스토리 삭제후에 네이밍 규칙에 맞게 수정해보겠습니다,,,
다른 좋은 방법이 있으면 제안해주세요

@ManyToMany 컬럼 수정

예를 들면 DislikeRooms, ScrapRooms의 경우도 생성시간 수정시간이 필요하다고 생각하는데
@ManyToMany를 통해 자동으로 컬럼이 생성되기때문에 생성시간,수정시간을 추가할수없다.
그래서 @ManyToMany 를 OneToMany, ManyToOne 으로 표현하면 좋을것같다.

어떻게 생각하시나요

@kong-hana01
Copy link
Collaborator

1번 문제 해결

제안주신 1, 2번 모두 상관없습니다~
sql 문을 IDE로 보면 색깔로 명령어와 테이블 정보 등이 구분되기 때문에 두 가지 모두 큰 차이는 없어보이네요!
다만 기존에 작성한 sql문들을 확인해보니 소문자로 작성된 경우가 많아서 변경사항이 적은 1번에 한 표 던지겠습니다!

2,3번 문제 해결

동의합니다~

파워 말씀주신 대로 @manytomany도 엔티티를 분리하는 방향으로 수정해보면 좋을 것 같네요!

Copy link
Collaborator

@kong-hana01 kong-hana01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다

  • 도메인 별 패키지 분리
  • BaseEntity 상속 모두 좋네요~

근데 이렇게 보니까 Member 객체가 하는게 진짜 많네요 ㅋㅋㅋㅋㅠㅠㅠㅠ

@0chil
Copy link
Collaborator

0chil commented Sep 11, 2023

SQL 컨벤션

1, 2 모두 상관없으나 1번이 더 혼란이 적을 것 같습니다!

flyway 마이그레이션 스크립트 명명 규칙

동의합니다~!

ManyToMany 필드 수정

동의합니다~!

별도로 파선생님께 궁금한 점이 있어요!
저는 계층별 패키지 구조에서 도메인별 패키지 구조로 변경 작업을 진행하신다고 이해했는데,
실제로는 도메인 계층만 분리되면서 depth가 추가되어 오히려 구조가 복잡해진것 같아요.
아예 도메인별 패키지 구조로 바꾸면 어떨까요?

@Songusika
Copy link
Collaborator

파워가 제안한 사항의 저의 의견은 아래와 같습니다.

sql 작성시 대소문자가 혼용되어서 사용된다.

  • 해당 부분은 2번 (Mysql 에서 제공해주는 키워드는 대문자로 사용 그외 사용자들이 정의한 테이블 및 컬럼들은 소문자로 사용) 에 한표하겠습니다. 👍

Flyway 파일 버저닝 및 네이밍

  • 파워가 제안한 방법 좋다고 생각합니다 동의👍

ManyToMany 문제

  • 현재 ManyToMany 가 걸려있는 부분은 Member - ScrapRooms, Member - DislikeRooms 입니다.
  • 제 생각에는 과연 Member 에서 ScrapRooms, DislikeRooms 를 알필요가 있을까 입니다.
    • 저는 Member에서 해당 의존들을 제거하고 ScrapRooms 등에서 Member 를 알아야하지 않을까 생각이듭니다.
      (예전에 말씀 드렸던 Member 위주로 객체를 설계하다보면 모든 의존이 Member에 있게 될 수 있는 문제가 있습니다.)
    • 따라서 Member 에서 해당 의존들을 삭제하고 ScarpRoomsRepository 등 각각의 레포를 작성하는게 유지보수에 더 좋지 않을까 생각합니다
  • 그리고 과연 MemberScrapRooms 가 같은 Aggregate 일까? 라는 생각도 듭니다. 같이 고민해봐용

@Songusika Songusika self-requested a review September 12, 2023 04:35
Copy link
Collaborator

@kong-hana01 kong-hana01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good!

@0chil 0chil added the backend 백엔드 분야 label Sep 12, 2023
@0chil 0chil added this to the 스프린트 5 milestone Sep 12, 2023
@0chil 0chil linked an issue Sep 12, 2023 that may be closed by this pull request
@thdwoqor thdwoqor merged commit 6b9e1b3 into backend Sep 12, 2023
2 of 3 checks passed
0chil pushed a commit that referenced this pull request Sep 21, 2023
* feat: id를 사용하는 entity는 BaseEntity를 상속하도록 수정

* refactor: flyway 사용 규칙에 따라 스크립트 수정
0chil added a commit that referenced this pull request Sep 21, 2023
* feat: id를 사용하는 entity는 BaseEntity를 상속하도록 수정 (#293)

* feat: id를 사용하는 entity는 BaseEntity를 상속하도록 수정

* refactor: flyway 사용 규칙에 따라 스크립트 수정

* refactor: 룸 업로드 페이지 리팩터링 (#307)

* refactor: 룸, 트랙, 미디어소스 역정규화 (#309)

* feat: 카카오 소셜 로그인 기능을 구현한다. (#301)

* refactor: 패키지 및 클래스 명 수정

* feat: 카카오 소셜로그인 idToken 검증 및 payload 추출 기능 구현

* feat: 카카오 소셜로그인 기능 구현

* refactor: jwkProvider를 static 변수로 가지도록 수정

* refactor: 구글 소셜로그인 검증 방식 통일

* refactor: 구글 소셜로그인 검증 방식 추상화

* feat: 멤버 객체 내 nickname 필드 추가

* feat: 닉네임 객체 구현

* refactor: 클래스 네이밍 변경

* feat: JwkProvider를 찾지 못할 때 예외 구현 및 record -> class로 변경

* refactor: final 키워드 추가

* chore: 닉네임 추가 sql 버전 변경 5.3 -> 5.4

---------

Co-authored-by: thdwoqor <celebarte01@gmail.com>

* chore: 데이터 베이스 테이블 컬럼 수정 (#311)

* feat: IdTokenResolver가 Provider에 맞게 동작한다 (#314)

* feat: IdTokenResolver가 Provider에 맞게 동작한다

* test: 지원하지 않는 Issuer 예외 테스트 추가

* refactor: 유지보수가 용이하도록 구조 개선

* refactor: 누락된 final 추가

* feat: 게스트로 로그인한다 (#316)

* feat: 게스트로 로그인한다

* feat: 빈 패스워드는 어떤 문자열과도 일치하지 않는다

* refactor: Member 클래스 내 생성자를 정적 팩토리 메소드로 변경

* refactor: final 키워드 추가

* fix: 머지 중 누락

---------

Co-authored-by: Kong-hana01 <gksqlsl11@khu.ac.kr>

* chore: 중복된 ci 파일 제거 (#323)

---------

Co-authored-by: Jae-Baek Song <83541246+thdwoqor@users.noreply.github.com>
Co-authored-by: Songusika <74398096+Songusika@users.noreply.github.com>
Co-authored-by: 0chil <gorae02@gmail.com>
Co-authored-by: thdwoqor <celebarte01@gmail.com>
kong-hana01 added a commit that referenced this pull request Jan 24, 2024
* feat: id를 사용하는 entity는 BaseEntity를 상속하도록 수정 (#293)

* feat: id를 사용하는 entity는 BaseEntity를 상속하도록 수정

* refactor: flyway 사용 규칙에 따라 스크립트 수정

* refactor: 룸 업로드 페이지 리팩터링 (#307)

* refactor: 룸, 트랙, 미디어소스 역정규화 (#309)

* feat: 카카오 소셜 로그인 기능을 구현한다. (#301)

* refactor: 패키지 및 클래스 명 수정

* feat: 카카오 소셜로그인 idToken 검증 및 payload 추출 기능 구현

* feat: 카카오 소셜로그인 기능 구현

* refactor: jwkProvider를 static 변수로 가지도록 수정

* refactor: 구글 소셜로그인 검증 방식 통일

* refactor: 구글 소셜로그인 검증 방식 추상화

* feat: 멤버 객체 내 nickname 필드 추가

* feat: 닉네임 객체 구현

* refactor: 클래스 네이밍 변경

* feat: JwkProvider를 찾지 못할 때 예외 구현 및 record -> class로 변경

* refactor: final 키워드 추가

* chore: 닉네임 추가 sql 버전 변경 5.3 -> 5.4

---------

Co-authored-by: thdwoqor <celebarte01@gmail.com>

* chore: 데이터 베이스 테이블 컬럼 수정 (#311)

* feat: IdTokenResolver가 Provider에 맞게 동작한다 (#314)

* feat: IdTokenResolver가 Provider에 맞게 동작한다

* test: 지원하지 않는 Issuer 예외 테스트 추가

* refactor: 유지보수가 용이하도록 구조 개선

* refactor: 누락된 final 추가

* feat: 게스트로 로그인한다 (#316)

* feat: 게스트로 로그인한다

* feat: 빈 패스워드는 어떤 문자열과도 일치하지 않는다

* refactor: Member 클래스 내 생성자를 정적 팩토리 메소드로 변경

* refactor: final 키워드 추가

* fix: 머지 중 누락

---------

Co-authored-by: Kong-hana01 <gksqlsl11@khu.ac.kr>

* chore: 중복된 ci 파일 제거 (#323)

* fix: 피드백 검증을 하지 않는 문제 해결

* chore: 컨벤션 통일

* docs: ci dev db 파일 수정

* fix: db url 수정

* fix: runs-on 수정

* chore: ci 스크립트 수정 복원

* chore: DB CI 복구

---------

Co-authored-by: Jae-Baek Song <83541246+thdwoqor@users.noreply.github.com>
Co-authored-by: Songusika <74398096+Songusika@users.noreply.github.com>
Co-authored-by: 0chil <gorae02@gmail.com>
Co-authored-by: thdwoqor <celebarte01@gmail.com>
kong-hana01 added a commit that referenced this pull request Mar 4, 2024
* feat: id를 사용하는 entity는 BaseEntity를 상속하도록 수정 (#293)

* feat: id를 사용하는 entity는 BaseEntity를 상속하도록 수정

* refactor: flyway 사용 규칙에 따라 스크립트 수정

* refactor: 룸 업로드 페이지 리팩터링 (#307)

* refactor: 룸, 트랙, 미디어소스 역정규화 (#309)

* feat: 카카오 소셜 로그인 기능을 구현한다. (#301)

* refactor: 패키지 및 클래스 명 수정

* feat: 카카오 소셜로그인 idToken 검증 및 payload 추출 기능 구현

* feat: 카카오 소셜로그인 기능 구현

* refactor: jwkProvider를 static 변수로 가지도록 수정

* refactor: 구글 소셜로그인 검증 방식 통일

* refactor: 구글 소셜로그인 검증 방식 추상화

* feat: 멤버 객체 내 nickname 필드 추가

* feat: 닉네임 객체 구현

* refactor: 클래스 네이밍 변경

* feat: JwkProvider를 찾지 못할 때 예외 구현 및 record -> class로 변경

* refactor: final 키워드 추가

* chore: 닉네임 추가 sql 버전 변경 5.3 -> 5.4

---------

Co-authored-by: thdwoqor <celebarte01@gmail.com>

* chore: 데이터 베이스 테이블 컬럼 수정 (#311)

* feat: IdTokenResolver가 Provider에 맞게 동작한다 (#314)

* feat: IdTokenResolver가 Provider에 맞게 동작한다

* test: 지원하지 않는 Issuer 예외 테스트 추가

* refactor: 유지보수가 용이하도록 구조 개선

* refactor: 누락된 final 추가

* feat: 게스트로 로그인한다 (#316)

* feat: 게스트로 로그인한다

* feat: 빈 패스워드는 어떤 문자열과도 일치하지 않는다

* refactor: Member 클래스 내 생성자를 정적 팩토리 메소드로 변경

* refactor: final 키워드 추가

* fix: 머지 중 누락

---------

Co-authored-by: Kong-hana01 <gksqlsl11@khu.ac.kr>

* chore: 중복된 ci 파일 제거 (#323)

* fix: 피드백 검증을 하지 않는 문제 해결

* chore: 컨벤션 통일

* refactor: DatabaseCleaner 인터페이스 및 구현체 구현

* refactor: AuthDatabaseCleaner 구현

* refactor: 외부에서 값을 주입받아 빈을 생성하도록 변경

* chore: 패키지 구조 변경(util -> config)

* refactor: ControllerTest의 profile 설정

* feat: MockLogin 객체 구현

* feat: MockLogin 객체 구현

* refactor: default 환경을 구성하는 컨트롤러 테스트 격리

* feat: 로그인을 담당하는 mock 서버 구현

* refactor: 로그인 환경을 설정하는 ControllerTestConfig 객체 구현

* refactor: 멤버 정보를 재사용해서 테스트를 하도록 변경

* fix: FeedbackControllerTest에서 캐싱사용하도록 변경

* docs: 예외 로그 확인 ci 파일 추가

* refactor: TestInstance 단위를 class로 변경

* refactor: MockLoginServer의 빈 스코프를 프로토타입으로 변경

* docs: ci 파일 복구

* refactor: 테스트 내 환경을 @TestConfiguration으로 변경

* chore: 사용하지 않는 콘솔 출력 제거

---------

Co-authored-by: Jae-Baek Song <83541246+thdwoqor@users.noreply.github.com>
Co-authored-by: Songusika <74398096+Songusika@users.noreply.github.com>
Co-authored-by: 0chil <gorae02@gmail.com>
Co-authored-by: thdwoqor <celebarte01@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend 백엔드 분야
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

id를 가지는 테이블은 BaseEntity를 상속받도록 수정
4 participants