12월 6일 - 수업 32일차 (SPRING, SQL)

수아레스·2022년 12월 6일
post-thumbnail

1. 아래의 쿼리문을 완성하시오.

--30번 소속 사원들 중에서 급여를 가장 많이 받는 사람보다 더 많은 급여를 받는 사람의 이름과 급여를 출력하는 쿼리문
👉 SELECT ENAME, SAL FROM EMP WHERE SAL >= (SELECT MAX(SAL) FROM EMP WHERE DEPTNO=30);
👉 SELECT ENAME, SAL FROM EMP WHERE SAL >=ALL(SELECT SAL FROM EMP WHERE DEPTNO=30);

--연봉을 3000이상 받는 사원이 소속된 부서와 동일한 부서에서 근무하는 사원들의 정보를 출력하는 쿼리문
👉 SELECT ENAME FROM EMP WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE SAL>=3000);

--사원들의 평균 급여보다 더 많은 급여를 받는 사원을 검색하는 쿼리문
👉 SELECT ENAME FROM EMP WHERE SAL > (SELECT AVG(SAL) FROM EMP);

2. 아래의 용어를 설명하시오.

DI(Dependency Injection)란 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다.

첫번째 방법은 A객체가 B와 C객체를 New 생성자를 통해서 직접 생성하는 방법이고, 두번째 방법은 외부에서 생성 된 객체를 setter()를 통해 사용하는 방법이다.


스프링에서는 객체를 Bean이라고 부르며, 프로젝트가 실행될때 사용자가 Bean으로 관리하는 객체들의 생성과 소멸에 관련된 작업을 자동적으로 수행해주는데 객체가 생성되는 곳을 스프링에서는 Bean 컨테이너라고 부른다.

Ioc 컨테이너

IoC(Inversion of Control)란 "제어의 역전" 이라는 의미로, 말 그대로 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미한다.

기존에는 다음과 순서로 객체가 만들어지고 실행되었다.

  1. 객체 생성
  2. 의존성 객체 생성
  3. 클래스 내부에서 생성
  4. 의존성 객체 메소드 호출

하지만, 스프링에서는 다음과 같은 순서로 객체가 만들어지고 실행된다.

  1. 객체 생성
  2. 의존성 객체 주입
    (제어권을 스프링에게 위임하여 스프링이 만들어놓은 객체를 주입)
  3. 의존성 객체 메소드 호출

스프링이 모든 의존성 객체를 스프링이 실행될때 다 만들어주고 필요한곳에 주입시켜줌으로써 Bean들은 싱글턴 패턴의 특징을 가지며, 제어의 흐름을 사용자가 컨트롤 하는 것이 아니라 스프링에게 맡겨 작업을 처리하게 된다.

3. 메이븐이란?

자바용 프로젝트 관리도구로 프로젝트의 전체적인 라이프 사이클을 관리한다.

Maven은 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아준다.

4. 스프링의 장점 및 단점에 대하여 설명하시오.

프레임워크란?

프로그램의 기초를 구축할 수 있는 코드의 집합

Spring

자바 플랫폼을 위한 오픈 소스 애플리케이션

POJO(Plain Old Java Object) 기반의 구성

스프링은 내부적으로 별도의 API를 사용하지 않고, 일반적인 Java 코드를 이용하여 객체를 구성하는 방식 그대로 사용한다. -> 코드를 개발할 때, 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다.

DI(Dependency Injection, 의존성 주입)

스프링에서는 'ApplicationContext'라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 한다. 따라서 스프링을 사용하면 객체와 객체를 분리해서 생성하고, 이런 객체들을 엮는 작업을 하게 된다. (Wiring)
ApplicationContext가 관리하는 객체들을 Bean이라고 칭하고, 빈과 빈 사이의 의존 관계를 처리하는 방식으로 XML, Annotation, Java 등 다양한 방식이 사용된다.

장점

  • 프레임워크이기 때문에, 개발자의 수준과 실력에 상관없이 일정 수준의 품질을 기대할 수 있다.
  • 담당자 혹은 개발자가 도중에 바뀌더라도, 유지보수에 관한 리스크를 줄일 수 있다.

단점

  • 많은 기능을 제공하고 탑재하고 있으므로 그만큼 무겁다.
  • 기능을 익히기 위해 많은 노력과 시간이 필요하다.

5. 스프링 프레임워크를 만든 사람은?

로드 존슨

profile
띵호와

0개의 댓글