Java와 NOSQL을 함께 가져 오는 방법

Java와 NOSQL을 함께 가져 오는 방법

NOSQL은 더 이상 예외가 아닙니다. 현대적인 데이터 아키텍처의 핵심 부분입니다.. Jakarta NOSQL 1.0이 출시되면서 Jakarta EE 원칙과 정렬 된 상태를 유지하면서 문서, 키 값, 열 및 그래프 데이터 모델을 통해 NOSQL 데이터베이스와 상호 작용하는 표준화되고 확장 가능한 방법을 얻습니다.

이 기사에서는 Jakarta NOSQL 1.0 사양을 소개하여 생산성을 높이고 매핑을 단순화하며 NOSQL 데이터에 대한 유창한 유형 안전 액세스를 제공합니다.

목표 : Java-NOSQL 통합 단순화

Jakarta NOSQL은 Jakarta EE Ecosystem의 첫 번째 사양입니다.

사양은 몇 가지 핵심 목표를 염두에두고 구축되었습니다.

  • NOSQL 데이터베이스 작업 할 때 개발자 생산성을 높이십시오
  • 자카르타 지속성과 유사한 주석 중심의 풍부한 물체 매핑을 활성화하십시오
  • 원활한 데이터베이스 작업을위한 Java 기반 쿼리 및 유창한 API 제공

주석 기반 매핑

Jakarta NOSQL의 핵심 강점 중 하나는 주석 모델로, Jakarta Persistence (JPA)에서 친숙한 개념을 빌려줍니다. 이는 이미 JPA에 익숙한 개발자가 신속하게 시작할 수 있음을 의미합니다.

주요 주석에는 다음이 포함됩니다.

주석 설명
@Entity 클래스를 지속 가능한 것으로 표시합니다
@Id 기본 키를 정의합니다
@Column 필드 또는 속성을 맵핑합니다
@Embeddable,,, @MappedSuperclass 구성 및 상속을 활성화합니다
@Convert 사용자 정의 유형을 지속하는 방법을 정의합니다

다음은 a의 기본 예입니다 Car 실재:

@Entity
public class Car {

    @Id
    private Long id;

    @Column
    private String name;

    @Column
    private CarType type;

    // Getters and setters...
}

메모: jakarta nosql 의도적으로 다음과 같은 관계 매핑을 정의하지 않습니다. @OneToMany 또는 @ManyToOne NOSQL 모델의 특성으로 인해 구현은 데이터베이스가 지원할 때 이러한 확장을 제공 할 수 있습니다.

템플릿 인터페이스 : 통합 데이터 브리지

Jakarta NOSQL은 다음을 소개합니다 Template NOSQL 데이터베이스와 Java 엔티티를 연결하는 인터페이스. 이 인터페이스를 통해 일관된 API로 표준 CRUD 작업 및 유창한 쿼리를 수행 할 수 있습니다.

기본 작업은 다음과 같습니다.

@Inject
Template template;

Car car = Car.id(1L)
             .name("Ferrari")
             .type(CarType.SPORT);

template.insert(car);

Optional result = template.find(Car.class, 1L);
template.delete(Car.class, 1L);

유창한 API로 쿼리

필수 지속성 외에도 Template 인터페이스를 제공합니다 유창한 쿼리 APINOSQL 액세스 표현식 및 유형 안전성 만들기 :

List cars = template.select(Car.class)
                         .where("type").eq(CarType.SUV)
                         .orderBy("name").asc()
                         .result();

template.delete(Car.class)
        .where("type").eq(CarType.COUPE)
        .execute();

이 추상화로 인해 공급 업체 별 쿼리 구문을 작성하지 않고 필터, 주문 및 작업을 쉽게 표현할 수 있습니다.

확장 성 및 구현

Jakarta nosql입니다 디자인으로 확장 가능. 사양은 표준 동작을 정의하지만 NOSQL 제공 업체는 사용자 정의 쿼리, 트랜잭션 또는 관계 지원을 포함한 확장을 통해 특정 기능을 추가 할 수 있습니다.

참조 구현, Eclipse JnoSQL은 다음을 제공합니다.

  • Jakarta NOSQL 주석 및 템플릿에 대한 완전한 지원
  • 통합 CDI 그리고 cdi lite
  • 기본 또는 클라우드 환경에서 반사 사용을 줄이기위한 주석 프로세서

툴링 지원은 Intellij Idea 플러그인을 통해 제공되어 엔티티 및 필드를 인식합니다.

자카르타 NOSQL 지원

자카르타 NOSQL 지원

Jakarta NOSQL 사용의 절충

Jakarta NOSQL은 Java-NOSQL 환경에 환영받는 수준의 표준화와 일관성을 제공하지만이 사양을 채택 할 때 관련된 트레이드 오프를 이해하는 것이 필수적입니다.

프로

  • 친숙한 프로그래밍 모델. Jakarta Persistence (JPA)를 이미 사용하고있는 개발자는 주석 모델이 직관적이고 채택하기 쉽습니다.
  • 이식성. 추상화를 통해 최소한의 코드 변경으로 NOSQL 데이터베이스간에 전환 할 수 있습니다.
  • 확장 성. 공급 업체는 고급 또는 데이터베이스 별 동작에 대한 확장을 제공하여 API가 필요에 따라 성장할 수 있도록합니다.
  • 자카르타 EE와의 통합. CDI를 사용하여 자카르타 EE 프로젝트에 자연스럽게 맞아 Enterprise Java World의 일류 시민입니다.
  • 개발자 생산성 향상. 풍부한 물체 매핑 및 유창한 쿼리 API는 학습 곡선을 단순화하고 보일러 플레이트를 줄입니다.

단점과 한계

  • 추상화 오버 헤드. API의 일반적인 특성은 데이터베이스 별 기능을 숨길 수 있으며 공급 업체 확장을 사용하지 않는 한 기본 기능에 대한 액세스를 제한 할 수 있습니다.
  • 기본적으로 관계 지원이 없습니다. JPA와 달리 엔티티 관계에 대한 내장 지원이 없습니다 ( @ManyToOne), 많은 NOSQL 데이터베이스가 조인을 지원하지 않기 때문에. 이로 인해 더 많은 수동 모델링 및 비정규 화 된 데이터가 발생할 수 있습니다.
  • NOSQL 모델링을위한 학습 곡선. 관계형 배경에서 오는 개발자는 특히 문서 및 그래프 데이터베이스에서 다양한 모델링 접근법에 적응해야 할 수도 있습니다.
  • 성능 조정 제한. 쿼리를 최적화하려면 세밀한 제어가 필요할 때는 기본 API로 떨어 뜨려야 할 수 있으므로 휴대 성을 줄일 수 있습니다.

요약하면 Jakarta NOSQL은 Java를 NOSQL과 통합하기위한 우아하고 표준화 된 경로를 제공하지만 모든 추상화와 마찬가지로 휴대 성과 데이터베이스 관련 최적화를 선택할 때 신중한 고려가 필요합니다.

결론

Jakarta NOSQL 1.0은 Java 생태계의 오랜 격차를 메우며 Jakarta EE 패턴을 사용하여 NOSQL 기술과 협력하는 표준의 공급 업체 중립 방법을 제공합니다. 자카르타 NOSQL은 클라우드 네이티브 마이크로 서비스를 구축하든 최신 데이터 모델을 향한 레거시 시스템을 발전 시키 든, 성장할 기초를 제공합니다.

NOSQL을 이미 사용하고있는 Java 개발자 인 경우 Jakarta NOSQL은 작업을보다 휴대하고 생산적으로 만듭니다. 그리고 관계에서 NOSQL 로의 전환을 고려하고 있다면이 사양은 친숙하고 일관된 경로를 제공합니다.

여기에서 전체 사양을 탐색 할 수 있습니다.

추가 독서

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다