스프링/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)을 강의 내용을 토대로 정리해보겠다! 

 

!!김영한 강사님 강의

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

반응형