복붙노트

[SPRING] ReactiveCrudRepository는 봄에 최대 절전 모드를 사용합니다.

SPRING

ReactiveCrudRepository는 봄에 최대 절전 모드를 사용합니다.

CrudRepository 대신 ReactiveCrudRepository를 사용하여 Hibernate와 Mysql을 사용할 수 있습니까? Spring Data Jpa와 Hibernate로 샘플을 시험해 보았지만 작동시키지 못했습니다. MongoDB와 cassandra에 대한 ReactiveCrudRepository에 대해서만 몇 가지 샘플을 찾을 수있었습니다.

해결법

  1. ==============================

    1.Hibernate와 MySQL은 아니지만 R2DBC와 Postgres, Microsoft SQL Server 또는 H2를 사용합니다. Spring Data R2DBC를 살펴보십시오.

    Hibernate와 MySQL은 아니지만 R2DBC와 Postgres, Microsoft SQL Server 또는 H2를 사용합니다. Spring Data R2DBC를 살펴보십시오.

    Hibernate / JPA를 포함하면 예측 가능한 미래에 이런 일은 일어나지 않을 것입니다. JPA는 데이터 모델의 일부를 메모리에로드하고 결과 객체 모델을 조작하고 JPA가 이러한 변경 사항을 변환하도록하는 아이디어를 기반으로합니다. 이 모든 것은 단일 거래 내에서 가능합니다.

    이것은 원 자성 변경을 시도하고 차단없이로드, 처리 및 저장 및 모든 것을 분리하려고 시도하는 반응 저장소를 다루는 방법과는 정반대입니다.

    따라서 JPA 아래의 기술 수준 인 JDBC를 살펴보아야합니다. 그러나 JDBC는 여전히 차단하고 있습니다. 데이터베이스에 SQL 문을 보내면 결과를 얻을 때까지 JDBC가 차단됩니다. 그리고 이것은 다시 반응의 아이디어에 반대합니다 : 절대 차단하지 마십시오. 어느 정도이를 완화하기 위해 이것을 스레드 풀에 랩핑 할 수 있지만, 이는 솔루션보다 더 많은 해결 방법입니다.

    리디지토리 저장소에 사용할 수있는 일부 데이터베이스에는 적합한 드라이버가 있습니다. 그러나 그것들은 독점적이며 모든 관계형 데이터베이스에서 실제로 작동해야하는 무언가를위한 좋은 기반이 아닙니다.

    봄 데이터 팀은 얼마 동안 ADBA가 그 격차를 해소하기를 희망했습니다. 그러나 메일 링리스트에 대한 토론은 ADBA가 비동기 적으로 만 목표로 삼고 있다는 것을 분명히했습니다. 다시 반응적인 저장소 추상화에 필요한 것이 아닙니다.

    그래서 2018 년 초에 교차로 또는 반응 및 관계형에 살고있는 다양한 사람들이 반응적인 데이터베이스 액세스에 대한 표준이 필요하다고 결정했습니다.

    R2DBC (관계형 데이터베이스 액세스) 그러한 표준에 대한 제안입니다. 희망은 오라클이 ADBA를 적극적으로 접근하도록 유도하는 데 도움이되거나, 그렇지 않을 경우 ADOB가 표준 자체가되는 것입니다.

    이미 세 가지 구현을 통해 두 번째 옵션에 대한 기회가 유망 해 보입니다.

    R2DBC 자체는 주로 SPI, 즉 데이터베이스 제공 업체가 구현할 API입니다. SPI는 구현 자에게 최소한의 요구 사항을 부여하는 방식으로 설계되었습니다. 그러나 이로 인해 R2DBC는 다소 번거롭 게 사용됩니다. 그 아이디어는 다른 라이브러리가 JDBC와 함께 일어났던 것처럼 SPI의 상단에 유용성을 위해 설계된 라이브러리를 구축하고 빌드하는 것입니다.

    Spring Data R2DBC는 그러한 라이브러리 중 하나이며 여러분이 요청한 것을 제공합니다 : JPA / Hibernate와는 별개이지만 아직 MySQL에 대한 지원은 없지만 ReactiveCrudRepository에 대한 지원.

    R2DBC와 Spring Data R2DBC 모두 아직 프로덕션 릴리스가 없었으며 몇 달이 걸릴 것입니다.

    스프링 데이터 R2DBC는 첫 번째 이정표를 발표했습니다. 현재 기능에 대해서는 릴리스 문서를 참조하십시오.

    R2DBC는 6 번째 이정표에 있습니다. 자세한 내용은 릴리스 문서를 참조하십시오.

    또한이 답변을 참조하십시오 : 왜 Spring은 관계형 데이터베이스에 반응 형 (비 차단) 클라이언트를 제공하지 않습니까?

    지금 (2017 년 1 월 현재) 불가능합니다.

    스프링 데이터의 반응 부분에 대한 현재 관련 릴리스는 Spring Data Kay M1입니다 (프로젝트 홈 페이지에서 사용 가능한 최신 버전이 있는지 확인할 수 있음)

    그리고 Spring Data 팀의 블로그 게시물에서 해당 릴리스에 대해 그리고 특히 반응 부품은 (강조 표시)부터 시작합니다.

    그 이유는 관계형 데이터베이스에 액세스하는 표준 non-blocking 방법이 없다는 것입니다. 이런 종류의 API를 지원하는 개발자 만 지원됩니다.

    JPA 또는 JDBC를 사용하여 ReactiveCrudRepository를 구현하고 작업을 스레드 풀에 위임 할 수 있습니다. 이것은 외부에 비동기 API를 제공 할 것이지만 여전히 스레드에 대한 리소스를 소비하고 독립적 인 데이터 액세스간에 차단하므로 반응 접근 방식의 이점 중 일부만 실현됩니다.

  2. ==============================

    2.이전 답변의 인용문에 따르면

    이전 답변의 인용문에 따르면

    James Ward는 그것이 비 차단 일 수 있다고 주장합니다. 나는 그에게 물었다.

    그가 대답했다.

    출처

    따라서 당신은 hibernate + spring 데이터를 postgresql-async (mysql과 함께 동작해야 함)로 대체함으로써 대응할 수있다.

  3. from https://stackoverflow.com/questions/41483194/reactivecrudrepository-to-use-hibernate-in-spring by cc-by-sa and MIT license