Q1.
DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요.
A1.
DI(Dependency Injection)는 의존성 주입이다. 이는 객체지향 프로그래밍에서 사용되는 개념이고
객체간 의존성을 줄이기 위해 사용된다. 직접 객체를 생성하는 것이 아닌 외부에서 생성한 후 주입시키는 방식이다.
이렇게 하면 객체 간의 결합도가 낮아져 유지보수와 테스트가 쉬워지는 장점이 있다.
의존성 주입을 하는 방식은 생성자 주입, 세터 주입, 필드 주입이 있다.
현재 스프링 프레임 워크에서 가장 권장되는 방식은 생성자 주입 방식이다.
스프링은 애플리케이션 실행 시점에 필요한 bean을 DI컨테이너에 생성한다. 그리고 의존성 있는 객체를 연걸하기 위해 한 객체를 다른 객체로 주입하는데 이를 제어의 역전(IOC)라고 한다.
객체를 사용할지에 대한 책임을 개발자가 아닌 프레임워크가 가지는 동시에 개발자는 수동적으로 주입받는 객체를 사용하기 때문이다.
Q2.
DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까요?
A2.
데이터베이스의 데이터 검색 성능을 높여주는 방법
특정 속성(컬럼)을 기준으로 정렬하여 데이터의 물리적 위치 주소와 함께 별도 파일(인덱스)에 저장한다.
대량의 데이터를 가지고 있고 특정 조건의 데이터를 찾을 때는 인덱스를 활용하여 빠르게 데이터를 가져올 수 있다.
쿼리성능 향상, 데이터 정렬과 필터링 효율성 향상, 디크스 I/O 감소, 고속 쿼리 처리, 메모리 사용량 감소와 같은 장점이 있다.
다만 한 테이블에 인덱스가 너무 많으면 수정할 경우 소요시간이 커지고, 데이터 중복이 높은 값은 인덱스를 생성하는 것에 의미가 없다.
'개발' 카테고리의 다른 글
데일리과제 230223 (0) | 2023.02.23 |
---|---|
STARTTLS, SSL및 TLS 차이점 (0) | 2023.01.11 |
587포트와 465포트의 차이점 (0) | 2023.01.11 |
절차 지향 프로그래밍(Procedural Programming) (0) | 2022.12.04 |
관점 지향 프로그래밍 (AOP, Aspect oriented Programming) (1) | 2022.12.04 |
댓글