1. EJB 지옥
2000년대 초반 자바 진영 표준 기술 : Enterprise Java Beans
표준 기술이기 때문에, 글로벌하게 보급과 영업 잘 됨
ORM : SQL을 쓰지 않고 자바 객체를 DB에 저장하고 꺼냄
EJB 엔티티빈이라는 ORM 기술도 가짐
EJB 지옥 : 이론은 좋지만, 어렵고 복잡하고 느림
EJB가 제공하는 인터페이스 구현하고, EJB 의존적으로 개발해야 함 : 코드 지저분함, 라이프사이클 모름
POJO : 오래된 방식의 간단한 자바 오브젝트를 쓰자
-> 이런 말이 나올정도로 EJB가 힘들었다.
EJB 엔티티빈이라는 ORM 기술 수준도 너무 낮음
2. 해결책
1) 스프링
SI 개발자 "로드 존슨" : EJB 비판하며 쓴 책 "expert one-on-one J2EE Design and Development"
-> 미래의 스프링 됨
• EJB 컨테이너 대체
• 단순함의 승리
• 현재 사실상 표준 기술
2) 하이버네이트
"개빈 킹" : 저녁에 퇴근하고 와서 오픈소스 만듦 "하이버네이트 완벽 가이드"
• EJB 엔티티빈 기술을 대체
• JPA(Java Persistence API) 새로운 표준 정의
EJB --등장--> 하이버네이트 --자바표준--> JPA
JPA 표준 기술(JPA 인터페이스)은 있고, JPA 구현체는 따로 만들어야 한다. (하이버네이트, EclipseLink, 기타 등등 ...)
자바 진영 ORM 시장은 JPA 독점, 구현체는 하이버네이트가 80% 이상 차지
잘 안착된 이유 : 실무 개발자들이 필요한 것들로 만들었기 때문
하이버네이트를 정제하고 필요없는 것들 덜어내서, 실용성과 안정성을 더한 JPA라는 표준 기술 나오게 됨
3. 스프링 역사
1) 책 출간하며, 전설의 시작
• 2002년 로드 존슨 책 출간
• EJB의 문제점 지적
• EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000라인 이상의 기반 기술을 예제 코드로 선보임
• 여기에 지금의 스프링 핵심 개념과 기반 코드가 들어가 있음
• BeanFactory, ApplicationContext, POJO, 제어의 역전, 의존관계 주입
• 책이 유명해지고, 개발자들이 책의 예제 코드를 프로젝트에 사용
• 책 출간 직후 Juergen Hoeller(유겐 휠러), Yann Caroff(얀 카로프)가 로드 존슨에게 오픈소스 프로젝트를 제안
• 스프링의 핵심 코드의 상당수는 유겐 휠러가 지금도 개발
• 얀 카로프가 스프링 이름은 전통적인 J2EE(EJB)라는 겨울을 넘어 새로운 시작이라는 뜻으로 지음
-> 왜 스프링에 열광했는가?
예제 코드로 알아간다.
결국 하다보면 스프링과 비슷한 30,000줄의 코드가 만들어진다.
2) 릴리즈
• 2003년 스프링 프레임워크 1.0 출시 - XML
• 2006년 스프링 프레임워크 2.0 출시 - XML 편의 기능 지원
• 2009년 스프링 프레임워크 3.0 출시 - 자바 코드로 설정
• 2013년 스프링 프레임워크 4.0 출시 - 자바8
• 2014년 스프링 부트 1.0 출시
• 2017년 스프링 프레임워크 5.0, 스프링 부트 2.0 출시 - 리엑티브 프로그래밍 지원(비동기 가능)
• 2020년 9월 현재 스프링 프레임워크 5.2.x, 스프링 부트 2.3.x
-> 스프링 부트 : 스프링 설정과 빌드와 배포를 편리하게 하도록 개선
-> 과거에 스프링은 설정이 절반이다 라는 말이 있을정도
참고링크 : 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?cid=325969
스프링 핵심 원리 - 기본편| 김영한 - 인프런 강의
현재 평점 5.0점 수강생 49,469명인 강의를 만나보세요. 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 스프링 기본 기능, 스프
www.inflearn.com
'강의 실습 > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
| 프로젝트 생성 (0) | 2026.03.27 |
|---|---|
| 객체 지향 설계와 스프링 (0) | 2026.03.26 |
| 좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2026.03.25 |
| 좋은 객체 지향 프로그래밍이란? (0) | 2026.03.24 |
| 스프링이란? (0) | 2026.03.23 |
댓글