컨테이너
를 제공Spring Core
Question) "스프링 프레임워크에 대해 설명해 주세요."
Java
의 오픈소스 애플리케이션 프레임워크로,
기본적으로 특정 기술에 종속되지 않고 객체를 관리할 수 있는컨테이너
를 제공 합니다.
따라서컨테이너
로 객체를 관리하면서,
의존성 주입
과제어의 역전
을 통해 결합도를 낮출 수 있습니다.
컨테이너
가 의존관계
를 자동으로 연결하는 것Question) "DI (의존성 주입)에 대해 설명해 주세요."
DI
는Dependency Injection
으로,의존성 주입
을 의미 합니다.
객체 간의의존관계
를 미리 설정 해두면,
스프링 컨테이너
가의존관계
를 자동으로 연결하게 됩니다.
따라서, 직접 의존하는 객체를 생성하거나, 필요한 객체를 검색하여 가져올 필요가 없게되어
결합도
가 낮아진다는 장점이 있습니다.
제어권
이 사용자에게 있지 않고, 프레임워크
에 있는 것을 의미프레임워크
가 프로그램의 전체 흐름을 결정※ 라이브러리
제어권
이 사용자
에게 있음Math.random()
- 사용자가 Java의 Math 라이브러리 기능 사용Question) "IoC (제어의 역전)에 대해 설명 해주세요."
IoC
는Inversion of Control
로,제어의 역전
을 의미 합니다.
프로그램의제어권
이 사용자에게 있지 않고,프레임워크
에 있어서
필요에 따라 사용자의 코드를 호출하게 됩니다.
스프링에서는 인스턴스의 생성부터 소멸까지 개발자가 아닌컨테이너
가 대신 관리하게 됩니다.
RDMBS
)를 OOP 언어로 변환 해주는 기술Question) "ORM에 대해 설명해 주세요."
ORM
은Object Relational Mapping
으로,
관계형 데이터베이스를 OOP 언어로 변환 해주는 기술 입니다.
따라서, 비즈니스 코드가 DB 테이블에 바로 접근이 가능하도록 해줍니다.
ORM
을 위해 Java
에서 제공하는 API
interface
형태로 선언되어, 구현은 되어있지 않음
=> 하이버네이트
에서 JPA
의 interface
를 구현한 class
를 제공하여,
실질적으로 하이버네이트
를 사용
Question) "JPA에 대해 설명해 주세요."
JPA
는ORM
을 위해Java
에서 제공하는API
입니다.
Java
객체와 DB 테이블을 맵핑하며, 구현체로는하이버네이트
가 있습니다.
Question) "ORM, JPA, Hibernate의 장단점에 대해 설명해 주세요."
장점으로는비즈니스 로직
에 집중하고,객체 중심의 개발
을 할 수 있습니다.
메소드 호출
만으로도 쿼리를 수행하여,생산성
과유지보수성
이 향상 됩니다.
또한 특정DB
에 의존하지 않게 됩니다.
단점으로는 직접 SQL을 호출하는 것보다 조금 느릴 수 있습니다.
또한 복잡한 쿼리의 경우,메소드 호출
만으로 처리하기 어려울 수 있습니다.