[BE] SISC1-230 [FEAT] 출석세션-고아객체-삭제-로직-추가#159
Conversation
Walkthrough
Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
backend/src/main/java/org/sejongisc/backend/attendance/entity/SessionUser.java (2)
4-4: 와일드카드 import 사용 지양명시적 import 대신
lombok.*와일드카드를 사용하면 실제로 어떤 어노테이션이 사용되는지 파악하기 어렵습니다.-import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter;
30-31: 클래스 레벨@Setter사용 시 주의 필요클래스 레벨에
@Setter를 적용하면sessionUserId(Primary Key)를 포함한 모든 필드에 setter가 생성됩니다. PK 변경은 데이터 무결성 문제를 야기할 수 있습니다.양방향 관계 관리를 위해
attendanceSession필드에만 setter가 필요하다면, 필드 레벨@Setter사용을 권장합니다.@Getter -@Setter @Builder @NoArgsConstructor @AllArgsConstructor public class SessionUser extends BasePostgresEntity {그리고 필요한 필드에만 개별적으로 적용:
@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "session_id", nullable = false) @Setter private AttendanceSession attendanceSession;
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
backend/src/main/java/org/sejongisc/backend/attendance/entity/AttendanceSession.java(1 hunks)backend/src/main/java/org/sejongisc/backend/attendance/entity/SessionUser.java(2 hunks)
🔇 Additional comments (1)
backend/src/main/java/org/sejongisc/backend/attendance/entity/AttendanceSession.java (1)
48-61: orphanRemoval 적용 승인
rounds,sessionUsers,attendances컬렉션에orphanRemoval = true를 추가하여 컬렉션에서 제거된 엔티티가 자동으로 삭제되도록 설정한 점이 PR 목표(고아 객체 삭제 로직 추가)에 부합합니다.
backend/src/main/java/org/sejongisc/backend/attendance/entity/AttendanceSession.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
backend/src/main/java/org/sejongisc/backend/attendance/entity/SessionUser.java (1)
5-5: 명시적 임포트 사용을 권장합니다.와일드카드 임포트(
import lombok.*)는 Java 코딩 컨벤션에서 권장되지 않습니다. 클래스의 출처가 불명확해지고 네이밍 충돌 가능성이 있습니다.다음과 같이 명시적 임포트로 변경하는 것을 고려해주세요:
-import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter;
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
backend/src/main/java/org/sejongisc/backend/attendance/entity/AttendanceSession.java(1 hunks)backend/src/main/java/org/sejongisc/backend/attendance/entity/SessionUser.java(3 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- backend/src/main/java/org/sejongisc/backend/attendance/entity/AttendanceSession.java
backend/src/main/java/org/sejongisc/backend/attendance/entity/SessionUser.java
Outdated
Show resolved
Hide resolved
backend/src/main/java/org/sejongisc/backend/attendance/entity/SessionUser.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
backend/src/main/java/org/sejongisc/backend/attendance/entity/SessionUser.java (1)
5-5: 와일드카드 임포트 대신 명시적 임포트를 권장합니다.
lombok.*와일드카드 임포트는 어떤 Lombok 어노테이션이 사용되는지 명확하지 않습니다. 코드 가독성과 IDE 지원을 위해 사용하는 어노테이션만 명시적으로 임포트하는 것이 좋습니다.-import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor;
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
backend/src/main/java/org/sejongisc/backend/attendance/entity/Attendance.java(1 hunks)backend/src/main/java/org/sejongisc/backend/attendance/entity/SessionUser.java(2 hunks)
🔇 Additional comments (3)
backend/src/main/java/org/sejongisc/backend/attendance/entity/SessionUser.java (2)
42-45: 양방향 관계에 대한@JsonBackReference설정이 올바릅니다.
attendanceSession필드에@JsonBackReference를 추가한 것은AttendanceSession과의 양방향 관계를 올바르게 처리하며, 순환 참조를 방지합니다. 이전 리뷰 코멘트에서 지적된 단방향 관계인user필드에는@JsonBackReference가 없어 적절하게 수정되었습니다.
51-53: 필드 단위 setter 적용이 적절합니다.클래스 레벨
@Setter를 제거하고userName필드에만 개별 setter를 추가한 것은 엔티티 캡슐화를 개선합니다. 이는 ID 필드(sessionUserId)와 연관관계 필드(attendanceSession,user)에 대한 무분별한 수정을 방지하며, 이전 리뷰에서 지적된 데이터 무결성 문제를 해결합니다.backend/src/main/java/org/sejongisc/backend/attendance/entity/Attendance.java (1)
40-66: 필드 단위 setter 전략이 엔티티 캡슐화를 개선합니다.클래스 레벨
@Setter를 제거하고 필요한 필드에만 개별 setter를 적용한 것은 좋은 접근입니다. 특히attendanceId(기본 키)와 연관관계 필드(user,attendanceSession,attendanceRound)에 setter가 생성되지 않도록 하여 엔티티 무결성을 보호합니다.
Summary by CodeRabbit
릴리즈 노트
새 기능
버그 수정
개선 사항
✏️ Tip: You can customize this high-level summary in your review settings.