스프링/SpringBasicCore
Section1 스프링 역사
나는웅쓰
2024. 1. 25. 15:28
반응형
인프런 강의 中
김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다.

스프링 이전 Java 개발(EJB)
EJB(Enterprise JavaBeans)
- spring, jpa 등을 다 섞어놓은 기술
- service, dao 등을 별도의 서버에 놓고 분산해서 사용할 수 있었던 기술
- *ORM(Object Relational Mapping) 기술도 가지고 있었음
*ORM (Object Relational Mapping)
- 객체와 데이터베이스의 데이터 사이의 관계를 매핑함으로써 SQL을 사용하지 않고 자바로만 데이터베이스를 다룰 수 있도록 해주는 도구
=> 반복되는 쿼리문 작성을 줄일 수 있기 때문에 자바 개발자로써는 더 편하고 비즈니스 로직에 집중할 수 있게 됐다.
EJB 지옥
- 서버도 분산해서 사용하는 등 작업할 것이 많아 어렵고 복잡하고 느리다.
- EJB에 의존적으로 코드를 작성해야해서 코드가 굉장히 지저분해짐
- 이 때문에 옛날 자바로 돌아가자는 POJO(Plain Old Java Object) 용어가 생김
- EJB가 제공하는 ORM기술인 entity bean은 기술 수준이 굉장히 낮았음
- entity bean을 대체하기 위해 *hibernate라는 기술이 개발
- 그렇게 개발된 자바 표준이 *JPA
*JPA(Java Persistance API)
- 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이며 이에 대한 구현체로는 hibernate가 많이 사용된다.
*hibernate
- JPA 구현체이자 자바용 ORM 프레임워크
- 내부적으로는 JDBC API를 사용한다.
결론적으로, EJB가 너무 어렵고 코드도 객체지향의 이점을 살려서 작성하지 못하니, 순수한 자바를 사용하려고 노력했다. 그 과정속에서 객체지향 설계 원칙을 지키며 개발을 해보니, 지금의 스프링 프레임워크를 만들게 된다.(정확하게는 DI 컨테이너)
스프링(Spring)
- 2002년 로드 존슨 책 출간
- EJB 없이도 충분히 고품질 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000라인 이상의 기반 기술을 예제 코드로 선보임
- BeanFactory, ApplicationContext, POJO, 제어의 역전(IOC), 의존관계 주입(DI) 등 개념이 다 들어가있음
- 다형성, OCP, DIP를 전부 가능하게 지원해주는 프레임워크. DI 컨테이너도 제공
- 스프링 이름은 전통적인 J2EE(EJB)라는 겨울을 넘어 새로운 시작이라는 뜻으로 지음
이렇게 탄생하게 된 스프링은 자바 언어 기반의 프레임워크로 객체 지향 언어가 가진 강력한 특징(앞서 말한 DI, IOC 등)을 살려내는 프레임워크다.(이전에 EJB로 개발을 하려면 EJB에 종속된 채 개발을 해야했기 때문에 객체 지향의 특징을 못 살린채 개발을 해야했음.)
그래서!! 스프링이 순수한 자바로 개발할 수 있고 객체지향의 이점을 살려서 개발을 할 수 있다는데 그게 뭔데!! 라는 생각이 들기 때문에 객체지향의 이점을 살릴 수 있는 좋은 객체지향 설계원칙(SOLD)을 강의 내용을 토대로 정리해보겠다!
!!김영한 강사님 강의
반응형