패스트캠퍼스 환급챌린지 46일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기
***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다
TypeORM의 @OneToOne 관계에서 데이터를 생성하는 과정을 학습하면서, 단순히 두 엔티티의 인스턴스를 만들고 연결하는 것을 넘어 데이터베이스 레벨에서의 관계 형성과 데이터 일관성 유지에 대한 깊은 이해가 필요함을 느꼈습니다. 특히 관계의 주인(Owner)을 명확히 파악하고, 외래 키 제약 조건이 데이터 생성 과정에 미치는 영향을 고려하는 것이 중요함을 깨달았습니다.
첫째, 관계의 주인이 데이터 생성 흐름을 결정하는 핵심 역할을 한다는 것을 명확히 인지했습니다. @OneToOne 관계에서 @JoinColumn 어노테이션을 통해 외래 키를 가진 엔티티, 즉 관계의 주인이 연관된 엔티티를 생성하고 연결하는 책임을 갖습니다. 주인이 아닌 엔티티에서 연관된 데이터를 먼저 생성하더라도, 주인이 되는 엔티티를 통해 관계를 명시적으로 설정해야 데이터베이스에 외래 키 값이 제대로 저장되고 관계가 형성된다는 점을 이해했습니다. 마치 집을 지을 때, 설계도를 바탕으로 주춧돌을 먼저 놓고 그 위에 다른 요소들을 쌓아 올리는 것처럼, 관계의 주인을 중심으로 데이터 생성 흐름을 관리하는 것이 데이터 일관성을 유지하는 데 중요합니다.
둘째, 연관된 엔티티를 생성하고 연결하는 다양한 방법과 그 상황별 적절성을 고려하게 되었습니다. save() 메서드를 사용하여 주인 엔티티와 연관된 엔티티를 함께 생성하거나, 이미 존재하는 엔티티를 찾아 관계를 설정하는 등 다양한 방법으로 @OneToOne 관계의 데이터를 생성할 수 있습니다. 이때, 각 방법의 특징과 장단점을 이해하고, 데이터 생성 시점과 연관된 엔티티의 존재 여부에 따라 가장 적절한 방법을 선택하는 것이 효율적인 데이터 관리에 중요함을 깨달았습니다. 마치 여러 가지 요리 도구를 사용하여 하나의 요리를 완성하는 것처럼, 데이터 생성 시나리오에 맞춰 가장 적합한 방법을 선택해야 데이터 처리의 효율성을 높일 수 있습니다.
셋째, 외래 키 제약 조건이 데이터 생성 과정에서 발생시킬 수 있는 예외 상황과 그 처리의 중요성을 인지했습니다. @OneToOne 관계에서 외래 키 제약 조건은 데이터베이스의 무결성을 유지하는 중요한 역할을 하지만, 잘못된 데이터 생성 시에는 예외를 발생시킬 수 있습니다. 예를 들어, 존재하지 않는 부모 엔티티를 참조하는 자식 엔티티를 생성하려고 하거나, 이미 다른 엔티티와 연결된 자식 엔티티를 새로운 부모 엔티티에 연결하려고 할 때 데이터베이스 오류가 발생할 수 있습니다. 따라서 데이터 생성 전에 연관된 엔티티의 존재 여부를 확인하고, 예외 발생 시 적절한 오류 처리 로직을 구현하는 것이 안정적인 애플리케이션 개발에 필수적임을 깨달았습니다. 마치 다리를 건설할 때, 하중 제한을 초과하는 차량의 통행을 막는 것처럼, 외래 키 제약 조건은 데이터베이스의 안전성을 확보하는 중요한 방어 장치입니다.
넷째, 양방향 @OneToOne 관계에서 데이터 생성 시 한쪽에서만 관계를 설정해도 다른 쪽에서 접근이 가능하도록 TypeORM이 제공하는 메커니즘을 이해했습니다. 관계의 주인이 외래 키를 관리하고 데이터를 저장할 때, TypeORM은 자동으로 양방향 관계를 동기화하여 다른 쪽 엔티티에서도 연관된 데이터를 접근할 수 있도록 지원합니다. 이는 개발 편의성을 높여주지만, 내부적으로 어떻게 관계가 관리되는지 이해하고 사용하는 것이 예상치 못한 동작을 방지하는 데 중요함을 깨달았습니다. 마치 두 개의 방이 하나의 문으로 연결되어 있어 한쪽 방에서 문을 열면 다른 쪽 방으로 이동할 수 있는 것처럼, 양방향 관계는 데이터 접근의 편리성을 제공하지만, 내부 작동 방식을 이해하는 것이 중요합니다.
마지막으로, @OneToOne 관계 데이터 생성은 단순히 데이터베이스에 레코드를 추가하는 것을 넘어, 애플리케이션의 비즈니스 로직과 데이터 흐름을 반영하는 중요한 과정임을 느꼈습니다. 새로운 사용자 생성 시 프로필 정보를 함께 생성하거나, 주문 생성 시 결제 정보를 연결하는 등의 작업은 데이터베이스에 물리적인 연결을 만드는 동시에, 애플리케이션의 핵심 비즈니스 규칙을 구현하는 것입니다. 따라서 @OneToOne 관계 데이터를 생성하는 코드는 단순히 ORM의 사용법을 따르는 것을 넘어, 애플리케이션의 요구사항을 정확하게 이해하고 반영해야 한다는 인사이트를 얻었습니다. 마치 새로운 서비스를 출시할 때, 단순히 기능을 개발하는 것을 넘어 사용자의 흐름과 경험을 고려해야 하는 것처럼, 데이터 생성 과정 역시 애플리케이션의 전체적인 맥락 속에서 이해하고 설계해야 합니다.
이번 @OneToOne 관계 데이터 생성 학습을 통해 데이터베이스 관계 형성은 단순히 기술적인 구현을 넘어 데이터의 의미와 흐름, 그리고 애플리케이션의 비즈니스 로직을 반영하는 중요한 설계 과정임을 다시 한번 깨달았습니다. 앞으로 다양한 관계 설정 시나리오에서 데이터를 생성하고 관리하는 경험을 쌓으면서 데이터베이스와 ORM에 대한 깊이 있는 이해를 더욱 발전시켜 나가고 싶습니다.




#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB