[TroubleShooting] Cascade 옵션은 부모에게만
·
TroubleShooting
👀 현재 상황 및 배경 설명현재 프로젝트에서는 N:M 관계(다대다 관계)가 적용된 Member와 Organization 엔티티 간의 연관관계를 설정하고 있다. 중간 테이블인 OrganizationMember 테이블이 두 엔티티를 연결해주며, 이를 통해 양방향 관계가 관리된다. 중간 테이블을 통해 Member는 여러 Organization에 속할 수 있으며, 반대로 각 Organization도 여러 Member와 연관될 수 있다. 현재는 Organization 엔티티에서만 양방향 관계를 설정하여 컬렉션 필드를 관리하고 있다.또한, CascadeType 옵션을 통해 부모 엔티티 삭제 시 자식 엔티티도 자동으로 삭제되도록 구현했다. 그러나 중간 테이블인 OrganizationMember를 통해 양방향 관계를..
[TroubleShooting] 컬렉션 필드 초기화가 되지 않는 Builder 패턴
·
TroubleShooting
👀 현재 상황 및 배경 설명현재 프로젝트에서 Builder 패턴을 사용하여 엔티티 객체를 생성하고 있으며, 특히 양방향 연관관계를 설정한 Organization 엔티티에서 리스트 형태의 컬렉션 필드를 사용하고 있다. ▶ 구현 코드@Entity@Getter@Builder@NoArgsConstructor(access = AccessLevel.PROTECTED)@AllArgsConstructorpublic class Organization { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; ... // 양방향 연관관계 @OneToMany(mappedBy = "organization", cascade ..
[우아한테크코스] 프리코스 1주차 기록
·
회고/우아한테크코스
우아한테크코스 프리코스 1주차 과제 링크 GitHub - soeun2537/java-calculator-7: 우아한테크코스 프리코스 1주차 과제우아한테크코스 프리코스 1주차 과제. Contribute to soeun2537/java-calculator-7 development by creating an account on GitHub.github.com 🎯 목표 설정1주차 과제에서의 목표는 기능 구현뿐만 아니라, 코드의 가독성과 유지보수를 고려한 효율적인 리팩토링을 실천하는 것이었다. 또한, 테스트 코드 작성 경험이 많지 않아서, 이번 과제에서는 테스트 코드에 중점을 두고 진행했다.🔽 진행 계획기능 구현 목록 정리테스트 코드 작성클린 코드 및 SOLID 원칙을 고려한 코드 리팩토링배운 점 정리  💻..
[우아한테크코스] 우테코 코드 스타일 포매터 적용
·
회고/우아한테크코스
👀 배경 설명프리코스 과제에서 요구하는 프로그래밍 요구 사항 중 하나는 자바 스타일 가이드를 준수하는 것이었다. 처음에는 간단해 보였지만, 코드를 커밋하기 전에 스타일에 맞게 일일이 수정하는 일이 점점 번거로워졌다. 특히, 들여쓰기나 공백 같은 세세한 부분을 계속해서 맞추다 보니 작업 흐름이 끊기는 느낌이 들었다. 그래서 검색을 해보니, 코드 포매터라는 도구를 발견하게 되었다.코드 포매터는 미리 정의된 형식에 따라 코드를 자동으로 정리해주는 도구이다. 포맷팅 단축키(Command + Option + L)를 누르면 지정된 스타일로 코드가 정리되며, 코드를 저장할 때마다 자동으로 포맷팅되도록 설정할 수도 있어 일일이 수동으로 수정하는 수고를 덜 수 있다.또한, 우아한테크코스 스타일 가이드가 자바 기본 스타..
[우아한테크코스] 프리코스 시작 전, 목표 설정 및 클린 코드 원칙 정리
·
회고/우아한테크코스
🎯 목표 설정우아한테크코스에서의 목표: 개발자로서 추구할 가치를 설정하기 위해 끊임없이 도전하며 나 자신을 깊이 알아가는 것이다. 이를 위해 다양한 문제에 부딪히고, 프로젝트에 애정을 가지며 단순한 구현을 넘어 집요하게 리팩토링하는 경험이 필요하다고 느꼈다.프리코스에서의 목표: 따라서 이번 프리코스에서의 목표는 효율적인 리팩토링을 고민하며 이를 코드에 녹여내는 것이다. 이 과정에서 새로운 기술을 적극적으로 도입해 보고, 배운 점을 체계적으로 정리하려고 한다. 또한, 이러한 배움에 우선으로 집중하기 위해 처음부터 클린 코드 원칙을 준수하여 유지보수가 용이한 코드를 작성하고자 한다.  ✏️ 주차 별 회고 기록 방법목표 설정: 요구사항을 분석하고 명확한 학습 목표를 세운다.진행 과정: 고민의 흔적이 드러나는..
[Kubernetes] 쿠버네티스
·
Programming/Kubernetes
들어가기 앞서, 이 글은 도커(Docker) 및 컨테이너 배포에 대한 기본적인 이해를 전제로 작성되었습니다. 도커와 관련된 자세한 설명은 여기에 모두 정리해 두었으니, 참고해 주시면 좋겠습니다.  ✅ 쿠버네티스 (Kubernetes, k8s)쿠버네티스는 컨테이너화된 애플리케이션을 배포하고 관리하기 위한 오픈 소스 플랫폼이다. 컨테이너 오케스트레이션 도구로서, 애플리케이션의 확장, 배포, 운영을 자동화한다.오케스트레이션: 여러 개의 컨테이너 또는 서버를 효율적으로 관리하고 작업을 의미한다. 주요 역할은 애플리케이션이 여러 컨테이너로 구성되어 있을 때, 각각의 컨테이너를 배포, 스케일링, 업데이트, 복구하는 것을 자동화한다. ▶ 쿠버네티스의 등장 배경도커의 등장으로 컨테이너 기반 배포 방식이 보편화되었고, ..
[Docker] 도커
·
Programming/Docker
✅ 배포 방식의 변화 과정▶ 전통적 배포 (Traditional Depolyment)구성: 하드웨어 -> 운영체제 -> 애플리케이션설명: 물리적인 컴퓨터 한 대에 하나의 OS를 설치하고, 애플리케이션이 해당 운영 체제에서 직접 실행되는 방식이다.문제점자원 공유 문제: 애플리케이션들이 동일한 OS를 공유하므로, 같은 리소스(라이브러리, 네트워크, CPU)를 사용하게 된다. 이로 인해 성능 문제가 발생하게 된다.확장성 부족: 새로운 애플리케이션을 설치하거나 추가하려면 운영 체제 및 하드웨어의 환경에 맞게 설치하고 설정해야 한다.배포 방식하나의 물리적 서버가 있다.물리적 서버 위에 운영 체제를 설치한다.동일한 운영 체제에서 여러 프로덕트를 실행한다. 발생하는 문제들을 피하려면 물리적 서버를 추가로 구매해야 한..
[TroubleShooting] DB 쿼리 비용
·
TroubleShooting
👀 현재 상황 및 배경 설명현재 가게 사진을 업데이트하는 로직은 모든 기존 사진을 삭제한 후 새로운 사진을 덮어쓰는 방식으로 작동하고 있다.기존 사진 URL을 데이터베이스에서 모두 조회기존 사진 URL을 DB에서 모두 삭제새로운 사진 URL을 DB에 모두 저장 ▶ 구현 코드/** * 가게 사진을 업데이트합니다. */@Transactionalprotected void updateMarketImages(Market market, List imageUrls) { // 기존 사진 조회 List marketImageList = marketImageRepository.findAllByMarketId(market.getId()); // DB에서 기존 사진 URL 모두 삭제 marketImage..
soeun2537
'분류 전체보기' 카테고리의 글 목록 (5 Page)