DI , DB에서의 인덱스 사용(2일차)

2023. 3. 30. 00:44·스파르타 기술면접

DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요.

 💡 DI란? 객체간 의존성을 명시적으로 정의하고, 객체간의 결합도를 줄이기 위한 디자인 패턴
  • 객체를 생성하고 관리하는 코드에서 객체 간 의존성을 외부에서 주입하는 방식으로 작성할 수 있다.
  • 내부 생성을 하는 것은 무엇? → 개발자? ㄴㄴ 스프링(IOC : 제어의 역전)

→코드의 재사용성과 유지보수성이 높아지며, 객체 간 의존성이 줄어들어 유연성과 확장성이 높아진다.

  • 방법 3가지
    • 생성자를 통한 의존성 주입(권장)
    • 프로퍼티를 통한 의존성 주입
    • 인테페이스를 통한 의존성 주입(추상화 개념 → 완벽하게 분리되서 결합도를 낮출 수 있다.)
  • 장점
    1. 유연한 코드 작성 가능
      • DI를 이용하면 객체 간의 결합도를 낮출 수 있으므로 코드의 유연성과 재사용성이 높아집니다.
    2. 테스트 용이성
      • DI를 이용하면 객체를 대체하는 것이 용이해지므로, 유닛 테스트 등에서 객체를 쉽게 대체할 수 있습니다.
    3. 의존성의 명시화
      • DI를 이용하면 의존성을 명시적으로 선언하므로, 코드를 이해하기 쉬워집니다.
    4. 코드 재사용성
      • DI를 이용하면 재사용 가능한 코드를 작성할 수 있습니다.
    5. 유지보수성
      • DI를 이용하면 코드의 복잡성을 낮추어 유지보수성을 높일 수 있습니다.
  • 스프링과 같은 프레임워크에서 널리 사용
    • 스프링 프레임워크에서는 객체 생성과 관리를 스프링이 담당하며(bean, 라이브러리 등), 객체 간 의존성도 스프링이 주입한다(→ bean 은 ioc 컨테이너에 있음) → 개발자는 비즈니스 로직에만 집중할 수 있다, 객체 간 결합도를 낮출 수 있다.
    • 내용 추가 필요....

 


DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까요?

 💡 인덱스(index) 데이터베이스에서 데이터를 검색하거나 정렬하는 데 사용되는 자료구조 → 테이블의 컬럼 값을 기반으로 정렬된 데이터 구조.
  1. 데이터가 정렬된 상태로 관리됨
    1. 키 값을 기준으로 정렬되어 있음 → 데이터를 정렬하는 데 필요한 추가적인 작업이 필요 없음
    2. 키 값으로 관리되기 때문에 중복된 키 값은 인덱스에서 하나의 키 값으로 처리되어 중복 데이터가 제거됨. → 데이터 베이스의 성능이 향상됨.
  2. 빠른 검색 속도
    1. 데이터베이스에서 데이터를 빠르게 검색할 수 있도록 하기 위해, 인덱스는 일반적으로 특정 열에 대해 생성
    2. 인덱스를 통해 특정 키 값과 매칭되는 행을 빠르게 찾기 때문에 전체 레코드를 대상으로 검색하지 않고 검색 속도를 높일 수 있습니다.
    3. //별도의 데이터구조로 관리되기 때문에 인덱스만 읽으면 된다 → 성능적 이점

'스파르타 기술면접' 카테고리의 다른 글

Filter / Interceptor / AOP  (0) 2023.04.11
DI의 방식 중 필드 vs 생성자 주입 방식  (0) 2023.04.11
DI 방식, FIlter / Interceptor / AOP  (0) 2023.03.30
MSA , 제네릭(3일차)  (0) 2023.03.30
객체지향 프로그래밍(OOP) , REST API(1일차)  (0) 2023.03.30
'스파르타 기술면접' 카테고리의 다른 글
  • DI의 방식 중 필드 vs 생성자 주입 방식
  • DI 방식, FIlter / Interceptor / AOP
  • MSA , 제네릭(3일차)
  • 객체지향 프로그래밍(OOP) , REST API(1일차)
yeah구리
yeah구리
백엔드를 공부하는 초심자입니다.
  • yeah구리
    개발일지_헤맨만큼 내땅이다
    yeah구리
  • 전체
    오늘
    어제
    • 분류 전체보기 (114)
      • 스파르타 부트캠프(spring) (75)
      • 스파르타 기술면접 (10)
      • 코딩연습 (0)
      • 항해 (10)
      • 개발일지 (4)
        • 개인 회고 (1)
        • 개발로그 (실무) (2)
      • 공부노트 (0)
      • 코딩테스트 (0)
        • 프로그래머스 (0)
        • 백준 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    비전공개발자 #개발로그 #커리어
    X(Twitter) API #캐싱 #트러블슈팅 #개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
yeah구리
DI , DB에서의 인덱스 사용(2일차)
상단으로

티스토리툴바