일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Session1이 그 모든 클라이언트의 저올
- securityconfig
- 스프링시큐리티
- 스프링 #스프링 시큐리티 #spring security
- Spring Security
- WebConfigurerAdapter
- ㅂ
- WebSecurity
- ㅇㅇㅇㄴㅇ
- HttpSecurity
- Today
- Total
다오의 개발일지
스프링의 탄생과 하이버네이트 본문
스프링 이전의 EJB(Enterprise Java Beans)
엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다.
EJB 사양은 Java EE의 자바 API 중 하나로, 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 업무 로직을 처리하는 역할을 한다.
EJB의 특징과 단점
- 특징
- 비즈니스 객체들을 관리하는 컨테이너 기술
- 설정에 의한 트랜잭션 기술
- 대규모 분산 객체 시스템을 구축하기 위한 기술
- 단점
- 분산 환경에 맞도록 동작하기 위해서 추가적인 과부하(OverHead)가 많이 발생 -> 속도 저하, 비용 발생
- 인터페이스를 전부 구현해야하고 EJB에 의존적으로 구현해야하는 문제
- ORM인 Entity Bean의 기술 수즌이 낮음, join 쿼리도 잘 안되는 문제
ORM 이란?
ORM(Object Relational Mapping)은 객체와 관계형 데이터 베이스를 매핑.
이를 통해 패러다임의 불일치 문제를 개발자 대신 해결.
어느정도 성숙한 객체지향 언어에는 대부분 ORM 프레임워크들이 있음.
자바 진영에도 다양한 ORM 프레임워크들이 있는데 그중 하이버네이트가 가장 많이 사용됨.
스프링의 탄생
로드 존슨이라는 EJB개발자는 EJB없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주었다. 예제를 30.000라인 이상으로 작업한 책이 출간 된다. 이를 본 또 다른 개발자 유겐 휠러와 얀 카로프는 오픈소스 프로젝트를 제안했고 이로써 스프링이 탄생하게 되었다.
- 스프링 프레임워크 2.0까지는 XML로 주로 설정을 하였고 3.0부터 자바 코드로 설정이 가능해졌다.
- 스프링의 이름은 전통적인 J2EE(EJB)라는 겨울을 넘어 새로운 시작이라는 뜻으로 지어졌다.
스프링 프레임워크의 특징
- POJO 프로그래밍을 지향
- 핵심 기술: 스프링 대 컨테이너, AOP, 이벤트, 기타
- 웹 기술: 스프링 MVC, 스프링 WebFIux
- 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원
- 기술 통합: 캐시, 이메일, 원격접근, 스케줄링
- 테스트: 스프링 기반 테스트 지원
- 언어: 코틀린, 그루비
- 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용
스프링은 자바 언어 기반의 프레임워크로써 자바언어의 가장 큰 특징인 객체 지향 언어라는 점이다. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크이다.
스프링 부트
스프링 부트는 스프링으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 처리해주는 별도의 프레임워크다. 스프링 부트를 사용하면 기존에 어려운 초기 설정에 쏟아야 했을 시간과 노력을 절약하여 비즈니스 로직을 구현하는데에 집중할 수 있다.
스프링 부트를 사용하면 초기 설정을 간편하게 할 수 있는 것 외에도 몇 가지 장점이 있는데, 기존에는 배포를 할 때에 별도의 외장 웹 서버를 설치하고, 프로젝트를 War 파일로 빌드하여 배포를 진행했다, 이러한 방식은 처리 속도가 느리며 번거롭다는 단점을 가지는 반면, 스프링 부트는 자체적인 웹 서버를 내장하고 있어, 빠르고 간편하게 배포를 진행할 수 있다.
또한, 스프링 부트를 사용하면 독립적으로 실행 가능한 Jar 파일로 프로젝트를 빌드할 수 있어, 클라우드 서비스 및 도커와 같은 가상화 환경에 빠르게 배포할 수 있다.
스프링부트의 특징
- 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
- Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
- 손쉬운 빌드 구성을 위한 starter 종속성 제공
- 스프링과 3rd parth(외부) 라이브러리 자동 구성
- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
- 관례에 의한 간결한 설정
JPA
JPA란 자바 ORM 기술에 대한 API 표준 명세를 의미한다. JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이며, JPA를 사용하기 위해서는 JPA를 구현한 Hibernate, EclipseLink, DataNucleus같은 ORM 프레임워크를 사용해야 한다.
하이버네이트
게빈 킹이라는 개발자는 EJB가 제공하는 Entity Bean의 기술 수준을 극복하고자 자바 ORM 표준 JPA 를 정의하였다. JPA 표준을 구현한 대표적인 프레임워크가 Hibernate이다. 또한, ORM은 객체와 RDB 두 기둥 위에 있는 기술이라고 생각 할 수 있다.
참조1
궁금한 내용: POJO
'Spring > 스프링 핵심원리 기본편 | 김영한' 카테고리의 다른 글
객체 지향 프로그래밍 (1) | 2023.10.23 |
---|