hanghae99/TIL

[항해 취업코스] 취준 기록 11일차

욘아리 2024. 3. 18. 15:56

📌 프로젝트 관련 예상 질문

 

1. ORM과 Spring Data JPA가 무엇인지 설명해주세요.

  • ORM(객체 관계 매핑)은 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 프레임워크입니다. 이를 통해 객체 지향 프로그래밍 언어를 사용하여 데이터베이스를 조작할 수 있습니다. ORM은 객체 간의 관계를 유지하고 데이터베이스의 CRUD(Create, Read, Update, Delete) 작업을 처리합니다.
  • Spring Data JPA는 이러한 ORM 기술 중 하나로, 스프링 프레임워크에서 JPA를 사용하여 데이터베이스와 상호 작용을 단순화시켜줍니다. 반복적인 코드를 줄여주고, 개발자가 데이터 액세스 계층을 보다 쉽게 구현할 수 있도록 도와줍니다. Spring Data JPA는 Repository 인터페이스를 사용하여 데이터 액세스 메서드를 정의하고, 이를 통해 자동으로 데이터베이스 쿼리를 생성하고 실행할 수 있습니다.

 

2. JPA의 영속성 컨텍스트에 대해 아는 만큼 설명해주세요.

  • 영속성 컨텍스트는 쉽게 말해 엔티티를 영구 저장하는 환경입니다. 영속성 컨텍스트는 엔티티 객체를 보관하고 추적하여 변경 사항을 관리합니다. 또한, 데이터베이스와의 상호작용을 추상화하여 객체를 다루듯이 데이터베이스를 다룰 수 있도록 도와줍니다.
    • 변경된 엔티티는 즉시 데이터베이스에 저장되지 않고, 트랜잭션이 커밋될 때까지 지연됩니다. 여러 개의 변경 사항이 한 번의 데이터베이스 작업으로 묶여서 성능을 향상시킵니다.
    • 영속성 컨텍스트는 동일한 엔티티 식별자를 가진 객체가 동일한 인스턴스로 유지되도록 보장합니다. 따라서 애플리케이션 내에서 객체의 일관성을 유지할 수 있습니다.
    • 주로 트랜잭션 범위 내에서 동작합니다. 트랜잭션이 시작될 때 영속성 컨텍스트가 생성되고, 트랜잭션이 종료될 때 컨텍스트가 닫히는 것을 의미합니다.
    • 영속성 컨텍스트는 내부적으로 엔티티를 캐싱하여 빠른 조회를 가능하게 합니다. 이를 통해 데이터베이스 접근을 최소화하여 성능을 향상시킵니다.
    • 연관된 엔티티를 실제로 필요할 때까지 로딩을 지연시킵니다. 이를 통해 성능 저하를 최소화하고, 필요한 경우에만 데이터를 로드하여 메모리를 절약할 수 있습니다.

 

3. @Transactional 애너테이션에 대해 설명해주세요.

  • @Transactional 애너테이션은 데이터베이스와의 상호 작용에서 트랜잭션의 일관성과 안정성을 보장하기 위해 사용됩니다. 이 애너테이션은 메서드나 클래스에 붙여서 해당 메서드나 클래스가 하나의 트랜잭션 단위로 실행되도록 지정합니다. 주로 서비스 계층의 메서드에 붙여서 사용되며, 데이터베이스 관련 작업을 담당하는 메서드에 사용됩니다.
    • @Transactional 애너테이션을 붙인 메서드나 클래스는 트랜잭션 범위 내에서 실행됩니다.
    • 트랜잭션 내에서 예외가 발생하면 해당 트랜잭션은 롤백되어 데이터 일관성을 보장합니다.
    • 기본적으로 메서드가 호출되면 새로운 트랜잭션이 시작되고, 메서드가 성공적으로 완료되면 트랜잭션은 커밋됩니다.

 

4. MVC 패턴에 대해서 아는 만큼 설명해주세요

  • Model - View - Controller의 약자로 소프트웨어 디자인 패턴입니다.
  • Model은 어떠한 동작을 수행할지 정의하는 부분으로 비즈니스 로직을 처리하는 역할을 합니다.
  • View는 사용자에게 보여지는 화면으로 컨트롤러로부터 모델을 받아와 사용자에게 보여줍니다.
  • Controller는 사용자의 요청을 수신하여 해당 요청에 따라 적절한 비즈니스 로직을 호출하고, 그 결과를 View에 전달합니다. 이는 사용자의 입력을 처리하고, Model과 View 간의 통신을 중재하는 역할을 합니다.
  • MVC 패턴을 사용하면 사용자 인터페이스로부터 비즈니스 로직을 분리하여, 애플리케이션의 유지 보수성과 재사용성을 높일 수 있습니다.

 

5. 1+N 이슈가 발생하는 이유가 무엇인가요?

  • 1+N 문제는 주로 ORM을 사용하는 데이터베이스 작업에서 발생하는 성능 저하 문제입니다. 한 번의 쿼리로 연관 관계된 객체를 불러올 때, 각 객체를 조회하기 위해 추가적인 쿼리가 발생되기 때문입니다.
  • ORM에서 연관된 객체를 지연 로딩으로 설정하면, 객체를 사용할 때마다 추가적인 쿼리가 실행되어 데이터를 가져오게 됩니다.
  • ORM은 연관된 객체를 처음에는 하나의 쿼리로 가져오지 않고, 해당 객체에 접근할 때마다 쿼리를 실행합니다. 부모 객체를 조회할 때는 하나의 쿼리로 가져오지만, 자식 객체에 접근할 때마다 추가적인 쿼리가 실행되어 문제가 발생할 수 있습니다.
  • ORM에서 쿼리 최적화가 부족한 경우 한 번의 쿼리로 모든 필요한 데이터를 가져오지 않고, 여러 개의 쿼리를 실행하여 데이터를 가져오게 됩니다.

 

항해 개발자 취업 리부트 코스를 수강하고 작성한 콘텐츠 입니다.

https://hanghae99.spartacodingclub.kr/reboot

 

IT 커리어 성장 코스 항해99, 첫 취업부터 현직자 코스까지

항해99는 실무에 집중합니다. 최단기간에 개발자/PM으로 취업하고, 현직자 코스로 폭발 성장을 이어가세요. 실전 프로젝트, 포트폴리오 멘토링, 모의 면접까지.

hanghae99.spartacodingclub.kr