-
애플리케이션 서버는 추상 Java EE 사양을 구체적으로 구현한 것입니다. 예: Payara Server(Glassfish), IBM OpenLiberty 및 JBoss Wildfly.
-
JSR( Java 사양 요청 )은 기술을 추가하고 개선하기 위해 Java 커뮤니티에 보내는 공식적인 요청입니다. Java 기술 플랫폼에서 API를 표준화하고 JAX-RS(Java API for RESTful Web Services)와 같이 API를 블록으로 그룹화하는 데 사용되는 본체입니다. 모든 JSR에는 항상 기본 참조 구현이 있습니다.
-
참조 구현은 추상 JSR의 구체적인 구현/구현입니다. 예를 들어 JAX-RS의 참조 구현을 Jersey라고 합니다. Java EE 자체는 JSR입니다. 따라서 애플리케이션 서버는 다양한 Java EE JSR 참조 구현의 모음입니다. Java EE는 JSR 366이며 참조 구현 중 하나는 Glassfish 5입니다.
-
Jakarta EE는 2018년부터 Java EE의 새로운 이름입니다. 현재 Oracle은 Eclipse Foundation 의 관리 하에 Java 플랫폼을 이전했습니다 .
JavaEE 기본 사항
Java EE에는 세 가지 주요 API가 있습니다.-
JPA(자바 지속성 API). NoSQL 데이터베이스와 함께 작동하도록 확장할 수 있는 관계형 데이터베이스에서 정보를 저장하고 검색하는 일을 담당합니다. 이는 애플리케이션의 데이터 계층입니다.
-
컨텍스트 및 종속성 주입(CDI API). 이는 애플리케이션에서 결합을 줄이기 위한 표준화된 방법입니다. 자유로운 디커플링을 보장하기 위해 다양한 구성 요소 상호 작용을 관리합니다.
-
RESTful 웹 서비스용 Java API(JAX-RS). HTTP를 통한 리소스를 웹 서비스로 제공합니다.
컨텍스트 및 종속성 주입 API
종속성 주입은 반전 제어(개별 구성 요소가 종속성을 받는 소프트웨어 전략)의 특별한 형태입니다. 이는 낮은 결합 구성요소를 생성하기 위해 애플리케이션의 종속성을 외부화합니다.CDI의 특징
-
종속성 주입(Typesafe)을 사용하면 유형에 대한 종속성을 선언하여 컴파일러가 런타임에 오류를 포착할 수 있습니다.
-
수명주기 컨텍스트는 수명주기 및 상태 저장 구성 요소 상호 작용을 잘 정의되었지만 확장 가능한 수명 주기 구성 요소에 연결하는 기능입니다.
-
인터셉터를 사용하면 특정 메서드에 액세스하려는 요청을 가로챌 수 있습니다.
-
이벤트는 고도로 분리된 애플리케이션을 개발하는 방법입니다. Observers 메서드가 실행된 이벤트를 수신하는 동안 이벤트가 실행될 수 있습니다.
-
SPI(Service Provider Interface)는 Apache 라이브러리와 같이 확장으로 사용할 수 있는 일련의 기술, API 및 인터페이스입니다.
일부 CDI API 개념:
-
CDI Bean Discovery는 종속성 주입 프레임워크가 Bean을 구문 분석하고 검색하여 기본적으로 Bean, 즉 @Annotated와 같은 주석이 있는 Bean을 검색하는 방법을 제어하는 메커니즘입니다. Bean 검색 모드에는 ALL(주석이 없는 Bean 포함), ANNOTATED 및 NONE의 세 가지 유형이 있습니다.
-
CDI 컨테이너는 Java 클래스가 해당 기능과 기능을 갖고 들어오고 나가는 팩토리 메소드입니다. Bean을 관리하는 애플리케이션입니다.
-
Bean 및 컨텍스트 인스턴스. Bean은 개발자가 생성하는 템플릿입니다. 상황별 인스턴스는 CDI 컨테이너에 의해 생성되고 관리되는 Bean의 인스턴스입니다.
자바 지속성 API
JPA는 객체를 관계형 데이터베이스 테이블에 매핑하는 데 사용됩니다. Java Persistence API는 ORM 선언문의 원칙을 따릅니다. ORM 매니페스트(객체 관계형 매핑 매니페스트):-
테이블이 아닌 개체: 개발자는 테이블이 아닌 개체를 작성합니다.
-
무지가 아닌 편리함: ORM은 편리해야 합니다. 개발자는 관계형 데이터베이스에 대한 최소한의 지식을 가지고 있어야 합니다. ORM은 무지를 숨기는 방법이 아니라 편리함을 제공하는 것입니다.
-
눈에 띄지 않고 투명함: ORM은 개발자가 데이터베이스에 있는 내용을 제어하고 저장된 내용을 완전히 제어할 수 있도록 만들어야 합니다. 레거시 데이터, 새 개체: ORM을 사용하면 레거시 데이터에서 새 개체를 만들 수 있습니다. 즉, 레거시 데이터베이스를 Java 개체로 재구성할 수 있습니다.
-
충분하지만 너무 많지는 않습니다. ORM은 임피던스 불일치(데이터베이스 모델과 프로그래밍 언어 간의 차이로 인해 발생하는 문제를 나타내는 데 사용되는 용어)로 인한 일반적인 문제를 해결하는 모든 도구를 제공합니다. ORM은 지나치게 무거워서는 안 됩니다.
-
지역성 및 이동성: 데이터는 로컬이지만 애플리케이션의 지속 상태가 애플리케이션의 다른 부분으로 이동하는 것이 가능해야 합니다.
-
표준 API, 플러그형 구현: 표준 API를 사용하지만 필요에 따라 구현을 변경할 수 있습니다.
-
JPA 객체의 가장 모듈화된 구성 요소는 POJO(Plain Old Java Object)입니다. 각 객체에는 고유한 식별자가 있어야 합니다.
-
JPA 엔터티는 일반적으로 @MappedSuperClass와 같은 주석을 사용합니다. 이를 통해 공통 엔터티 필드가 포함된 슈퍼클래스를 사용할 수 있습니다. @AttributeOverride 주석은 슈퍼클래스 엔터티를 재정의하는 데 사용됩니다. @Column은 데이터베이스 매핑을 구성하는 데 사용됩니다. @Transient 주석은 데이터베이스에 매핑하면 안 되는 엔터티 클래스의 필드에 사용할 수 있습니다.
-
액세스 유형은 지속성 공급자가 엔터티의 상태에 액세스하는 프로세스입니다. 필드 액세스는 공급자가 리플렉션을 통해 직접 클래스의 필드에 액세스할 때 발생합니다. 속성 액세스는 Java Bean 속성 메서드를 사용하여 상태에 액세스할 때 발생합니다. 즉, getter 및 setter가 사용됩니다. 속성 액세스를 사용하려면 getter에 @Id 주석을 달아야 합니다. 혼합 액세스 유형은 @Access 주석을 사용하여 동일한 엔터티 클래스의 필드와 속성 모두에 대한 액세스를 사용합니다.
RESTful 웹 서비스용 Java API
REST 아키텍처의 제한사항:-
클라이언트와 서버는 서로 독립적입니다.
-
상태 비저장: 서버에 도착하는 각 개별 요청은 자율적이고 고유합니다. 서버는 이전 요청에서 어떠한 가정도 하지 않습니다.
-
캐시 가능성: 시스템은 성능과 확장성을 향상시키기 위해 다양한 수준에서 캐싱을 지원해야 합니다.
-
통합 인터페이스는 클라이언트가 서버의 리소스에 액세스하고 서버의 리소스와 상호 작용하기 위한 공통 통합 인터페이스를 가져야 함을 의미합니다. 다중 계층 시스템: 클라이언트가 로드 밸런싱을 지원하는 서버와 같은 다중 계층 시스템에 대해 걱정할 필요가 없는 방식으로 서버를 여러 계층으로 구현할 수 있습니다.
-
HTTP GET 방법: 리소스에 대한 요청입니다. GET 요청 메서드는 멱등적입니다. 즉, 해당 메서드에 대해 동일한 요청을 반복적으로 수행해도 서버의 리소스나 데이터 상태가 변경되어서는 안 됩니다.
-
HTTP POST 방법: POST 요청은 서버에 새 리소스를 생성하는 데 사용됩니다. 이로 인해 서버의 데이터 세트가 변경됩니다. POST에는 일반적으로 페이로드 또는 서버에서 생성하려는 모든 항목이 게시되거나 첨부되는 본문이 있습니다.
-
HTTP PUT 방법: 의미론적으로 사용되어 서버의 리소스를 업데이트합니다.
-
HTTP DELETE 방법: 서버의 리소스를 삭제하는 데 사용됩니다.
-
콘텐츠 유형. 쿼리 방법으로 사용하고 생성할 수 있는 콘텐츠 유형에는 XML, CSV, EXCEL, TEXT, JSON 등 여러 가지가 있습니다.
-
JAX-RS에는 메시지 본문 작성 개념이 있습니다. 이는 Java 유형을 클라이언트가 예상하는 유형으로 변환하는 데 사용되는 API 구성입니다. @Produces 주석을 사용하여 Java 객체의 응답이 변환되는 유형을 지정할 수 있습니다.
-
@Consumes 주석은 JAX-RS 런타임에 지정된 자원 메소드가 소비하는 컨텐츠 유형을 알려줍니다. 그런 다음 JAX-RS 런타임은 페이로드로 전달된 JSON 컨텐츠를 메소드 매개변수와 유형이 동일한 Java 객체로 변환합니다.
-
JAX-RS 예외 매퍼: 예외를 HTTP 응답에 매핑하는 데 사용되는 API 구성입니다. @Provider 주석은 JAX-RS 런타임에 예외 해결 프로그램을 프로그래밍 방식으로 등록하는 데 사용됩니다.
GO TO FULL VERSION