ProductPromotion
Logo

Kotlin

made by https://0x3d.site

GitHub - coupang/spring-data-requery: Spring Data with Requery
Spring Data with Requery. Contribute to coupang/spring-data-requery development by creating an account on GitHub.
Visit Site

GitHub - coupang/spring-data-requery: Spring Data with Requery

GitHub - coupang/spring-data-requery: Spring Data with Requery

spring-data-requery

Build Status jcenter

Spring Data for requery

requery는 대부분의 DB를 지원하는 Lightweight ORM Library 입니다. 또한 Java, Kotlin, Android 등 JVM 환경과 Android 환경 모두를 지원하여, 가벼우면서, 성능 좋은 라이브러리입니다.

참고: Requery Overview

Branch Information

  • 1.5.x : Support Spring Boot 1.5.x (Not provided currently)
  • 2.x : Support Spring Boot 2.0.x
  • 2.1.x : Support Spring Boot 2.1.x

Setup

Maven

Add jcenter repository

<repositories>
    <repository>
        <id>jcenter</id>
        <url>http://jcenter.bintray.com</url>
    </repository>
</repositories>

Add dependency

<dependency>
    <groupId>com.coupang</groupId>
    <artifactId>spring-data-requery</artifactId>
    <version>2.0.3</version>
</dependency>

Gradle

Use jcenter repository only

repository {
    jcenter()
}
dependencies {
    // for Java
    compile "com.coupang:spring-data-requery:2.0.3"
    
    // for Kotlin
    compile "com.coupang:spring-data-requery-kotlin:2.0.3"
    
    // for Spring Boopt 2
    compile "com.coupang:spring-boot-starter-data-requery:2.0.3"
}

제공 모듈

현재 branch 2.x 에서 제공하는 기능은 spring boot 2.0.x 을 사용하여 제작되었습니다. 향후 branch 1.x 에서는 spring boot 1.x 기반으로 제공될 예정입니다.

spring-data-requery

Java를 이용한 Backend 개발 시, Spring Data의 다양한 조회를 자동 생성하는 기능을 제공합니다.

  • Query By Property
  • Query By Native Query
  • Query By Example

제한 사항

현재 requery 기능의 한계로 다음과 같은 기능은 지원되지 않습니다.

  • Named Parameter (추후 지원 예정, 또는 spring-data-jdbc를 이용할 예정)
  • Association property 에 대한 질의 생성 (requery가 JOIN에 대해서는 선언적 정의를 지원하지 않으므로, default method로 구현해야 합니다)

spring-boot-starter-data-requery

spring-data-requery 를 Spring Boot 환경에서 쉽게 사용할 수 있도록 Auto Configuration 기능을 제공합니다.

spring boot 환경설정에서 다음과 같이 설정하면 쉽게 사용 가능합니다.

# spring-data-requery
spring.data.requery.modelName = org.springframework.boot.autoconfigure.data.requery.domain.Models.DEFAULT
spring.data.requery.batchUpdateSize = 50
spring.data.requery.statementCacheSize = 512
# if no need to create schema, make `tableCreationMode` to comments
spring.data.requery.tableCreationMode = CREATE_NOT_EXISTS

spring.datasource.hikari.driver-class-name = org.h2.Driver
spring.datasource.hikari.jdbc-url = jdbc:h2:mem:test
spring.datasource.hikari.username = sa

spring-data-requery-kotlin

spring-data-requery-kotlin 은 kotlin 언어를 위해 독립적으로 제작, 지원됩니다. Domain Entity 정의 시 Kotlin은 Java와 달리 Interface로 정의해야 하고, 이를 field가 아는 method로 인식하게 되어, 내부 구현 시 Java와 혼용하기 어렵습니다. 그리고, primitive type에 대한 처리가 Java와는 달라 추가적인 작업이 필요했습니다.

사용법은 Java보다 조금 더 간편합니다만, 다음과 같은 default method를 이용하여 custom query를 만들 때에 주의할 점이 있습니다.

Java에서는 default keyword를 지정하면 되지만, Kotlin에서는 @JvmDefault annotation을 지정해 주어야 합니다.

    @JvmDefault
    fun findColleaguesFor(userId: Int?): List<UserEntity> {
        return operations
            .select(UserEntity::class)
            .join(User_Colleagues::class).on(UserEntity::id eq User_Colleagues.USER_ID)
            .where(User_Colleagues.FRIEND_ID.eq(userId))
            .get()
            .toList()
    }

spring-boot-starter-data-requery-kotlin

추후 지원 예정

requery-phoenix

곧 지원 예정

Apache Phoenix를 requery를 이용하여 사용하기 위한 라이브러리입니다. HBase 가 INSERT, UPDATE 대신 UPSERT 만을 지원하므로, Apache Phoenix용 SQL문을 생성하도록 하는 라이브러리입니다.

More Resources
to explore the angular.

mail [email protected] to add your project or resources here 🔥.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory