Section1 스프링 역사

2024. 1. 25. 15:28· 스프링/SpringBasicCore
목차
  1.  
  2. 스프링 이전 Java 개발(EJB)
  3. 스프링(Spring)

 

인프런 강의 中 
김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다.

스프링 이전 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

'스프링 > SpringBasicCore' 카테고리의 다른 글

Section3 스프링을 이용한 Dependency Injection  (2) 2024.02.07
Section3 의존성 주입 및 제어의 역전  (3) 2024.01.31
Section3 OCP, DIP가 지켜지지 않은 코드  (0) 2024.01.31
Section2 요구사항에 맞추어 순수 자바로 개발  (1) 2024.01.30
좋은 객체지향 설계의 5가지 원칙(SOLID)  (1) 2024.01.29
  1.  
  2. 스프링 이전 Java 개발(EJB)
  3. 스프링(Spring)
'스프링/SpringBasicCore' 카테고리의 다른 글
  • Section3 의존성 주입 및 제어의 역전
  • Section3 OCP, DIP가 지켜지지 않은 코드
  • Section2 요구사항에 맞추어 순수 자바로 개발
  • 좋은 객체지향 설계의 5가지 원칙(SOLID)
나는웅쓰
나는웅쓰
IT 블로그입니다.
나는웅쓰
웅쓰네
나는웅쓰
전체
오늘
어제
  • 분류 전체보기 (44)
    • 인공지능 (1)
    • 스프링 (20)
      • SpringBasicCore (17)
      • Nexacro (2)
      • Spring MVC (1)
    • HTTP 웹 기본 지식 (11)
    • Database (1)
    • 자격증 (1)
    • 취미생활 (2)
    • 인프라 (8)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • udp
  • 최선을
  • 봉준호
  • BTS
  • 오블완
  • 네트워크관리사 2급
  • 나에게도 스프링이 올까?
  • 티스토리챌린지
  • 강사님
  • Jay Park let's go
  • 쉽지 않아
  • 의존관계 자동 주입
  • 넥사크로
  • 어려웡
  • 손흥민
  • 다하자
  • 김영한
  • skr
  • ERD
  • 스프링 #나에게도 #봄이 #오면

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
나는웅쓰
Section1 스프링 역사
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.