Spring 1일차

MOZZI KIM·2022년 12월 6일
0

Spring

목록 보기
1/8
post-thumbnail

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

--30번 소속 사원들 중에서 급여를 가장 많이 받는 사람보다 더 많은 급여를 받는 사람의 이름과 급여를 출력하는 쿼리문
--연봉을 3000이상 받는 사원이 소속된 부서와 동일한 부서에서 근무하는 사원들의 정보를 출력하는 쿼리문
--사원들의 평균 급여보다 더 많은 급여를 받는 사원을 검색하는 쿼리문


--30번 소속 사원들 중에서 급여를 가장 많이 받는 사람보다 더 많은 급여를 받는 사람의 이름과 급여를 출력하는 쿼리문
select ename, sal from emp where sal > (select max(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
- Ioc 컨테이너
- IoC

📌 DI(Dependency Injection)란?

DI는 Dependency Injection의 줄임 말로, 의존성 주입이라는 뜻이다. 각 클래스의 의존 관계를 Bean 설정 정보를 바탕으로 컨테이너가 자동으로 주입 해준다.

DI는 IoC 프로그래밍 모델을 구현하는 방식 중 하나 이다.

IoC가 범용적인 의미이기 때문에 스프링이 제공하는 기능의 특징을 명확하게 설명하지 못한다. 그렇기 때문에 스프링이 제공하는 IoC방식의 핵심을 표현하기 위해 의존성 주입(Dependency Injection)이라는 용어를 사용하기 시작했다. (DI가 스프링에서 시작된 개념은 아니다)

DI의 핵심은 외부에서 주입되는 ⭐다이나믹한(동적인) 의존 관계⭐ 이다.


👉 스프링 DI의 3가지 조건

  1. 클래스 모델이나 코드에는 의존 관계가 드러나지 않는다.
  2. 런타임 시점의 의존 관계는 컨테이너나 팩토리 같은 존재가 결정한다.
  3. 의존 관계는 사용 할 오브젝트에 대한 레퍼런스를 외부에서 제공(주입) 해 줌으로써 만들어진다.

📌 IoC란?

IoC란 Inversion of Control의 줄임말이며, 제어의 역전이라고 한다.
스프링 애플리케이션에서는 오브젝트(빈)의 생성과 의존 관계 설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 스프링 컨테이너가 담당한다.
이를 스프링 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다.
따라서, 스프링 컨테이너를 IoC 컨테이너라고도 부른다.

📌 IoC 컨테이너란?

스프링에서는 IoC를 담당하는 컨테이너를 빈 팩토리, DI 컨테이너, 애플리케이션 컨텍스트라고 부른다.
오브젝트의 생성과 오브젝트 사이의 런타임 관계를 설정하는 DI 관점으로 보면, 컨테이너를 빈 팩토리 또는 DI 컨테이너라고 부른다.
그러나 스프링 컨테이너는 단순한 DI 작업보다 더 많은 일을 하는데, DI를 위한 빈 팩토리에 여러 가지 기능을 추가한 것을 애플리케이션 컨텍스트라고 한다.
정리하자면, 애플리케이션 컨텍스트는 그 자체로 IoC와 DI 그 이상의 기능을 가졌다고 보면 된다.


3. 메이븐이란?

📌 Maven이란?

  • 프로젝트를 진행하게 되면 단순히 자신이 작성한 코드만으로 개발하는 것이 아니라 많은 라이브러리들을 활용해서 개발을 한다. 이때 라이브러리들의 수가 수십개가 넘는 일이 발생하곤 하는데, 라이브러리들이 많아지면 관리가 힘들어지게 된다. 이때 필요한게 메이븐이다.

  • 메이븐은 내가 사용할 라이브러리뿐만 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다.

  • 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리들을 자동으로 다운 받아 준다.

  • 따라서 메이븐을 사용하면 jar 파일을 공유하고 카톡으로 보내는 등의 쓸모없는 짓을 할 필요 없이 pom.xml에 필요한 것을 명시해 놓으면 라이브러리를 아주 쉽게 관리할 수 있다.

  • 메이븐은 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이며 최근에는 메이븐과 같은 라이브러리 관리 프로그램인 Gradle이 많이 사용되고 있다.


📌 Maven의 장점과 단점

  1. 라이브러리의 관리를 쉽게 할 수 있다.

  2. 프로젝트의 작성부터 컴파일, 페트스 등 프로젝트 라이프 사이클에 포함되는 각 테스트를 지원해 준다.

  3. war 파일 기반의 배포용으로도 자주 사용된다.

  4. 작업 환경이 다른 개발자들이 소스코드를 공유하기 위해 메이븐을 사용할때 pom.xml을 같이 공유하면 개발환경이 다르더라도 에러가 터지지 않고 정상적으로 실행된다.


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

📌 스프링 장점

  • 정형화 되어있어서 일정수준의 품질을 기대할 수 있고,

  • 유지보수가 쉽다. (프레임워크 숙달자 기준) 등

  • 개발자가 기본적인 디자인 패턴 (DI, AOP, 서비스 추상화 등)을 강제적으로 사용하도록 한다.

  • 유연성이 좋다. 등

  • 각 모듈을 조립(설정만 완벽하게 하면)하면 기능을 쉽게 구현가능하다.

  • 모듈(기능) 추가및 제거 - 관리가 수월하다.

📌 스프링 단점

  • 습득시간이 오래 걸린다.

  • 무겁다. model 1 방식 개발방식에 비해서 상대적으로?

  • 스프링 설정하는 것에만 익숙해지다보니 코딩 실력이 떨어지게됨.


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

📌스프링 프레임워크(영어: Spring Framework)?

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.

                                          로드존슨 

2002년 Expert One-on-One J2EE Design and Development 라는 저서에서 선보인 코드가 기초가 되었으며 이게 바로 스프링이다.

오픈소스로 많은 개발자들이 참여하여 버전업 하였습니다. SpringSource라는 회사를 창립하였고 VM웨어가 이를 인수하였고
자연스럽게 로즈존슨은 VM웨어에서 개발자로서 미들웨어 개발을 이끌다. 퇴사 하였습니다. 현재는 Atomist CEO로 활동중입니다.

profile
코린이

0개의 댓글