작년에 저는 Kotlin을 배우기 시작하면서 Java 애플리케이션을 변환하는 것이 얼마나 쉬운지 놀랐습니다. IntelliJ와 몇 가지 다른 IDE는 자동 변환을 위한 훌륭한 도구를 제공하며, 몇 가지 조정만 하면 훨씬 간결하고 오류가 적은 코드를 완성할 수 있습니다.

그래서 제가 가장 좋아하는 새로운 조합을 보여주기 위해 샘플 애플리케이션을 만들기로 했습니다: Kotlin입니다, 스프링 부트, 스프링 데이터, 카우치베이스:

사용자 프로필 서비스 만들기

여기에서 전체 프로젝트를 복제할 수 있습니다:

https://github.com/couchbaselabs/try-cb-kotlin

메인 클래스를 만드는 것부터 시작하겠습니다:

 참고: 클래스는 다음과 같아야 합니다. 열기 그렇지 않으면 다음과 같은 오류가 발생합니다:

다음은 사용자 엔티티로, 다음과 매우 유사합니다. 자바:

  • @Document: 엔티티를 정의하는 카우치베이스의 어노테이션은 다음과 유사합니다. 엔티티 를 추가합니다. 카우치베이스는 자동으로 다음과 같은 프로퍼티를 추가합니다. _class 를 문서에 추가하여 문서 유형으로 사용하세요.
  • @Id: 문서의 핵심
  • @Field: JPA의 주석과 유사한 Couchbase의 주석은 다음과 같습니다. 칼럼. 이 기능은 필수는 아니지만 사용을 권장합니다.

Couchbase에서 어트리뷰트 매핑은 매우 간단합니다. JSON의 해당 구조에 직접 매핑됩니다:

  • 간단한 속성: JSON으로 간단하게 매핑할 수 있습니다:

  • 배열: 예상할 수 있듯이 다음과 같은 배열은 보안 역할 은 JSON 배열로 변환됩니다: 

 

  • 중첩된 엔티티: 매핑을 싫어하시나요? @ManyToOne 관계에 대해 고민하시나요? 저도 마찬가지입니다. 문서 데이터베이스를 사용하고 있으므로 더 이상 이러한 관계를 작성할 필요가 없으며 중첩된 엔티티도 JSON으로 직접 변환됩니다.

리포지토리

이제 리포지토리가 어떤 모습일지 살펴보겠습니다:

 

  • @N1qlPrimaryIndexed: 이 주석 는 현재 리포지토리와 연결된 버킷에 N1QL 기본 인덱스가 있는지 확인합니다.
  • @ViewIndexed:  이 주석 를 사용하면 디자인 문서의 이름과 보기 이름은 물론 사용자 지정 맵과 축소 기능을 정의할 수 있습니다.

아래에서 볼 수 있듯이 다음과 같이 모든 Spring 데이터 키워드 를 사용하여 다음과 같이 데이터베이스를 쿼리할 수 있습니다. FindBy사이IsGreaterThan좋아요, 존재

리포지토리가 확장 중입니다. 카우치베이스 페이징 및 정렬 저장소를 추가하여 쿼리의 페이지 매김을 지정할 수 있습니다. 페이지 가능 매개변수를 추가하세요. 더 강력한 쿼리를 작성해야 하는 경우 N1QL을 사용할 수도 있습니다:

위의 쿼리에는 더 작게 만들기 위해 몇 가지 구문 설탕이 있습니다:

  • #(#n1ql.bucket): 이 구문을 사용하면 쿼리에서 버킷 이름을 하드코딩하지 않아도 됩니다.
  • #{#n1ql.selectEntity}: 구문-설탕에 SELECT * FROM #(#n1ql.bucket):
  • #{#n1ql.filter}: 구문-설탕을 사용하여 문서를 유형별로 필터링하는 것은 엄밀히 말하면 class = 'myPackage.MyClassName' (_class 는 스프링 데이터에서 카우치베이스로 작업할 때 문서에 자동으로 추가되어 유형을 정의하는 어트리뷰트입니다.)
  • #{#n1ql.fields} 는 엔티티를 재구성하는 데 필요한 필드 목록(예: SELECT 절의 경우)으로 대체됩니다.
  • #{#n1ql.delete} 는 다음에서 삭제 문으로 대체됩니다.
  • #{#n1ql.반환} 는 엔티티 재구성에 필요한 반환 절로 대체됩니다.

서비스

저희 서비스는 기본적으로 요청을 리포지토리로 전달하지만, 임시 쿼리를 작성해야 하는 경우 여기로 오세요:

컨트롤러

마지막으로 휴식을 통해 서비스를 테스트할 컨트롤러도 추가해 보겠습니다:

Kotlin으로 통합 테스트 작성

통합 테스트를 올바르게 실행하려면 데이터베이스의 자격 증명을 다음에서 구성하는 것을 잊지 마세요. application.properties file:

여기에서 테스트가 어떻게 진행되는지 확인할 수 있습니다:

Kotlin 및 Maven 종속성

Kotlin은 빠르게 발전하고 있으므로 각 종속 요소의 최신 버전을 사용해야 합니다:

전체 내용을 볼 수 있습니다. pom.xml 여기.

작성자

게시자 데니스 로사, 개발자 옹호자, 카우치베이스

데니스 로사는 독일 뮌헨에 거주하고 있는 카우치베이스의 개발자 옹호자입니다. 그는 소프트웨어 엔지니어로서 탄탄한 경력을 쌓았으며 Java, Python, Scala, Javascript를 유창하게 구사합니다. Denis는 검색, 빅 데이터, AI, 마이크로서비스 및 개발자가 아름답고 빠르고 안정적이며 확장 가능한 앱을 만드는 데 도움이 되는 모든 것에 대해 글을 쓰는 것을 좋아합니다.

댓글 남기기