Rxã¯ãäŸåé¢ä¿ãšããŠReactive ExtensionsïŒã€ãŸããRxJavaïŒãæå³ããŸãã ãã®ãããžã§ã¯ãã®ååããhibernate-reactiveããªã©ã«å€æŽããŠãäºåã®æ··ä¹±ããªããããšããå§ãããŸãã
@emmanuelbernard WDYTïŒ
ãããããã¯åžžã«ã³ãŒãããŒã ã§ããã
ããã§ã¯ãæ¬åã«åºãŸããŸã§ã®éã®ããªã®ã§ãããã«å€æŽããã»ããããã§ãã
ç§ã¯ãããç§ã«å²ãåœãŠãŸããã 誰ããç°è°ãå±ããªãéããç§ã¯é±æ«ã«ãããããã€ããã§ãã
ç§ã¯é±æ«ã«ãããããã€ããã§ã
ããããããªãã¯ãããäœã«å€ããã€ããã§ããïŒ
hibernate-reactive
ã¯ããã»ã©æªãã¯èãããŸãã
>>
+1ããŠäŒæ¢ç¶æ ã«åå¿ãã
7:45 DavideDã®ã§ã¯æ°Žã2020幎4æ1æ¥ã«[email protected]æžããŸããïŒ
hibernate-reactive
ã¯ããã»ã©æªãã¯èãããŸãã>>
â
ãã®ã¹ã¬ããã«ãµãã¹ã¯ã©ã€ãããŠããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/hibernate/hibernate-rx/issues/77#issuecomment-607292426 ã
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/AADJJTIRGWQNUSN7FC3WCSLRKNHRJANCNFSM4LX6AEVQ
ã
ããã¯åé¡ãããŸãããã ReactiveSession
ã1000åå
¥åããããããŸããã
ç§ã¯HibernateRX
ã奜ãã§ãããåå¿çãã§ããããšã¯æŠå¿µã§ãããRxJavaã®åæšã§ã¯ãããŸããã
ããã¯åé¡ãããŸããããReactiveSessionã1000åå ¥åããããããŸããã
ã¿ã€ãïŒ ããŒããŒãã«ã¹ããŒã¹ãã¿ã³ããããŸãããïŒ :)
å
¬å¹³ãæãããã«ãã¯ã©ã¹åã«ãã¬ãã£ãã¯ã¹ã䜿çšããããšã¯ããŸã奜ãã§ã¯ãããŸããã ããã±ãŒãžã«å
¥ããã ãã§ååã§ããããïŒ ãããšããORMã䜿çšãããšãã«æ··ä¹±ããããŸããïŒ
ãã¶ãããã¬ãã£ãã¯ã¹ãšããŠR
ã䜿çšã§ããŸããïŒ
ãããç§ãèããããšãã§ãããªãã·ã§ã³ã®èŠçŽã§ãïŒäœãéããã®ãææ¡ããŠãã ããïŒïŒ
org.hibernate.rx.RxSession
ïŒçŸåšïŒorg.hibernate.rx.Session
org.hibernate.reactive.ReactiveSession
org.hibernate.reactive.Session
org.hibernate.reactive.RSession
org.hibernate.rx.RSession
ä»ã«äœãææ¡ã¯ãããŸããïŒ
ç§ã¯åŒ·ã奜ã¿ã¯ãããŸããã Reactiveã¯ååãèªã¿ãããããããã»ã©é·ãã¯ãªããšæããŸãã ã¹ãŒããŒã¯ã©ã¹ãæ¡åŒµããå®è£ ãŸãã¯ã¯ã©ã¹ã«ãã£ãŠã¯ã次ã®ããã«ãªãå¯èœæ§ãããããããã¬ãã£ãã¯ã¹ã¯å¿ èŠãªãããšã«æ³šæããŠãã ããã
class AbstracRxtEntityPersister extends RxEntityPersister
class AbstracReactivetEntityPersister extends ReactiveEntityPersister
ããã¯çŸåšã®ãããžã§ã¯ãã§ã¯ããŸãäžè²«ããŠããŸããã æã
ã¯ã©ã¹ã¯äœ¿çšããŠããŸãRxAbstractEntityPersister
ãªãã·ã§ã³3ã䜿çšãããšæããŸãïŒ org.hibernate.reactive.ReactiveSession
ããããããã«å¯ŸããŠããè¯ãææ¡ã匷ãæèŠããããã©ããèãã®ãåŸ
ã¡ãŸãã
ç§ã3
æ祚ããŸããããããã@vietjã«ãæèŠããããŸããïŒ
ãããç§ã¯ãã£ãšè¯ããªãã·ã§ã³ãèãåºãããšããŠããŸããããççŽã«èšã£ãŠç§ã¯ç©ºçœãæããŸããããããŠç§ã¯ããªããã¡ã«åæããŸãïŒ ReactiveSession
ããæ¬åœã«è¯ããã®ã¯ãªãããã§ãã
Javaã«åãšã€ãªã¢ã¹ããªãã®ã¯å«ãã§ãã ç§ãèããããšãã§ããå¯äžã®ããã¯ã¯ã Reactive.Session
ã Reactive.Query
ãªã©ãããã€ãã®Reactive
ã¿ã€ãã®å
éšã€ã³ã¿ãŒãã§ã€ã¹ãšããŠäœ¿çšããå¿
èŠã«å¿ããŠéçã€ã³ããŒãã䜿çšã§ããããã«ããããšã§ãã ããã¯åççãªã¢ãããŒãã§ãããJavaã§ä»ã®äººã䜿çšããŠããã®ãèŠãããšããããŸããã
ç§ã¯ãªãã·ã§ã³2ãš4ã奜ãã§ãã
- org.hibernate.rx.Session
- org.hibernate.reactive.Session
ããã±ãŒãžåã«ãã¯ã©ã¹ãããªã¢ã¯ãã£ããã§ããããšãäŒããŸãããã ãã¹ãŠã®ã¯ã©ã¹ã«ãã¬ãã£ãã¯ã¹ãšããŠRx / Reactiveãè¿œå ããå¿ èŠãããå Žåãã¯ã©ã¹ã¯äºçŽåžæ°ã®ããã«èŠããŸãã
éåå¿æ§ã®å¯Ÿå¿ç©ãšåãã¯ã©ã¹åã䜿çšããããšã®äž»ãªæ¬ ç¹ã¯ããŠãŒã¶ãŒãåãã¯ã©ã¹ã§äž¡æ¹ã®ã¯ã©ã¹ã䜿çšããããšãæåŸ ããå Žåã§ãïŒãããã£ãŠãåãè¡šçŸããããã¹ãŠã®å Žæã§å®å šä¿®é£Ÿã¯ã©ã¹åãå¿ èŠã§ãïŒããAFAIKã¯ãã¹ãã§ã¯ãããŸããèµ·ããïŒ
ç§ã¯ãªãã·ã§ã³2ãš4ã奜ãã§ãã
- org.hibernate.rx.Session
- org.hibernate.reactive.Session
FTRããã§ãåé¡ãããŸããããèªåã€ã³ããŒãæã«ãšã©ãŒãçºçãããªã¹ã¯ãé«ããªãããšã«æ³šæããŠãã ããã
æçµçã«ã¯ãè€æ°ã®çš®é¡ã®ãªã¢ã¯ãã£ãã»ãã·ã§ã³ãããããšãã»ãŒç¢ºå®ã§ããããšãèãããšã次ã®ããšãææ¡ããããšæããŸãã
MutinySession
StagedSession
ãŸãã¯CompletionStage
ãããªãã®WDYTïŒ
ããã¯ããªã¢ã¯ãã£ãã¿ã€ãã®ãã¬ãŒããŒãå ¬éããå¯äžã®ãŠãŒã¶ãŒåãAPIã§ããïŒ
ããã¯ããªã¢ã¯ãã£ãã¿ã€ãã®ãã¬ãŒããŒãå ¬éããå¯äžã®ãŠãŒã¶ãŒåãAPIã§ããïŒ
ãã¡ã€ã³ãAPIã®äžã§ã Query
çžåœãããã®ãæ€èšããŠãã ããã
ã¡ãªã¿ã«ããRxãã«ã¯ãããªã³ã°ããããšæããŸããåè¿°ããããã«ãRxJavaãããžã§ã¯ãã«ãã£ãŠãææããããŠããããã§ã¯ãªãã®ã§ãä»ã®äººãæ£ããèãããªããããååãä»ããŠãããããšæããŸãã
å¥çŽæ§é ã«ã€ããŠ
Gavinãææããããã«ã Session
ã€ã³ã¿ãŒãã§ãŒã¹ã®ãªãŒããŒããŒãã¯å¥œãã§ã¯ãããŸãããããã¯ããªãŒãã³ã³ããªãŒããšã©ãŒãšäººã
ã®èªç¥çãªãŒããŒããŒãã«ã€ãªãããŸãã
ãããã£ãŠã次ã®ãã¿ãŒã³ã®ããããã«å¯ŸããŠ+1ããŸãã
MutinySession
ã RxJava2Session
ã JDKReactiveSession
ïŒCompletionStageããã³Flowã®å ŽåïŒSessionMutiny
ã SessionRxJava2
ãªã©ä»£æ¿ãã¿ãŒã³ã¯reactiveSession.forMutiny().[...]
ã reactiveSession.forJDK().[...]
ããäŸåé¢ä¿ã®æªå€¢ã®å°çã«ãªãå¯èœæ§ãæãé«ããªããŸãã reactiveSession.unwrap(MutinySession.class)
ã¯äŸ¡å€ããããããªãããã§ãã
ããã€ãã®è¿œå ãã€ã³ãïŒ
CompletionStage
ã®è
ã®å
åŒã¯ãããŒã§ããã ããç§ã¯ãããJDKReactiveSession
ãšåŒã³ãŸãããRxJavaXSession
ã¡ãœããã¯ããªãŒããŒããŒãããããå¯èœæ§ããããŸãïŒäŸïŒ fetchAsSingle()
ãªã©ïŒãQuery
ã«ããªã¢ã¯ãã£ããªå¯Ÿå¿ç©ããããšæããŸãã ãšããã§ãã¯ãšãªãã©ã¡ãŒã¿ã¯çŽæ¥åãšãªã¢ã¯ãã£ãã©ãããŒã®äž¡æ¹ãåãå
¥ããå¿
èŠãããããšã«æ°ã¥ããŸããïŒäŸïŒ Uni<String>
ååãããããšãHibernate ORMReactiveã¯hibernate-orm-reactive
åé¡ãªããšæããŸããã @ FroMageã¯ã
@emmanuelbernardã¯ã Session
ãšSessionFactory
ãååŸããçŸåšã®æ¹æ³ã¯æ¬¡ã®ãšããã§ããããšã«æ³šæããŠãã ããã
RxSessionFactory sessionFactory = emf.unwrap(RxSessionFactory.class);
RxSession session = sessionFactory.openRxSession();
ç§ã¯ãã®ãã¿ãŒã³ã«ããªãæºè¶³ããŠããŸãã
JDKReactiveSession
ããŒãã ããã¯ãã³ãŒãã§é »ç¹ã«èŠãããå¯èœæ§ã®ãããã®ã«ãšã£ãŠã¯æãããããšã®ããã«èŠããŸãã
Query
ã«ããªã¢ã¯ãã£ããªå¯Ÿå¿ç©ããããšæããŸãã
ã¯ãããã§ã«ãããçŸåšRxQuery
ãšåŒã°ããŠããŸãã ããããä»ã®ãšããäœãããŸããã
æ£çŽãªãšãããç§ã¯æ¬¡ã®ãªãã·ã§ã³ããŸããŸã奜ãã«ãªã£ãŠããŸãïŒ
//I want to try out Mutiny
Mutiny.SessionFactory sessionFactory = emf.unwrap(Mutiny.SessionFactory.class);
Mutiny.Session session = sessionFactory.openReactiveSession();
Mutiny.Query = session.createQuery(hql);
ãŸãïŒ
//I want to try it out with CompletionStage
Stage.SessionFactory sessionFactory = emf.unwrap(Stage.SessionFactory.class);
Stage.Session session = sessionFactory.openReactiveSession();
Stage.Query = session.createQuery(hql);
ãããŠã Mutiny
ã䜿çšããŠããããšã確å®ã«ããã£ããã次ã®ããã«æžãããšãã§ããŸãã
import static org.hibernate.reactive.mutiny.Mutiny.*;
...
SessionFactory sessionFactory = emf.unwrap(SessionFactory.class);
Session session = sessionFactory.openReactiveSession();
Query = session.createQuery(hql);
ã¢ãŠã¿ãŒã¯ã©ã¹ã¯ãèªåã€ã³ããŒãã®å¶çºçãªåé¡ãå€§å¹ ã«è»œæžãããšæããŸãã ïŒãã ããä»ã«ãæ¬ ç¹ããããŸããïŒ
èŠäºã«èŠããŸã@gavinking
@gavinkingç§ã¯ããªãã®æåŸã®ææ¡ãæ¬åœã«å¥œãã§ãã
ã¢ãŠã¿ãŒã¯ã©ã¹ã¯ãèªåã€ã³ããŒãã®å¶çºçãªåé¡ãå€§å¹ ã«è»œæžãããšæããŸãã ïŒãã ããä»ã«ãæ¬ ç¹ããããŸããïŒ
äŸãã°ïŒ
@DavideDã®æ¬ ç¹ã®1ã€ã¯ãIDEãéåžžéçã€ã³ããŒããèªåçã«è¿œå ããªãããšã§ãã ïŒãã ãããããè¡ãããã«æ§æããããšã¯ã§ããŸããïŒ
@emmanuelbernardã¯ã
Session
ãšSessionFactory
ãååŸããçŸåšã®æ¹æ³ã¯æ¬¡ã®ãšããã§ããããšã«æ³šæããŠãã ãããRxSessionFactory sessionFactory = emf.unwrap(RxSessionFactory.class); RxSession session = sessionFactory.openRxSession();
ç§ã¯ãã®ãã¿ãŒã³ã«ããªãæºè¶³ããŠããŸãã
JDKReactiveSession
ããŒãã ããã¯ãã³ãŒãã§é »ç¹ã«èŠãããå¯èœæ§ã®ãããã®ã«ãšã£ãŠã¯æãããããšã®ããã«èŠããŸãã
ç§ãéãããã£ãŒãããã¯ã®ã»ãšãã©ããã人ã
ã¯CompletionStage
ãå«ããRxJavaãåéãæ¢ãã«è¡ããŸãã ãã®ããããã®ããŒãžã§ã³ã¯è²§ä¹äººã®éžæã«ãªããŸãã
ç§ãéãããã£ãŒãããã¯ã®ã»ãšãã©ããã人ã ã¯CompletionStageãå«ããRxJavaãåéãæ¢ãã«è¡ããŸãã ãã®ããããã®ããŒãžã§ã³ã¯è²§ä¹äººã®éžæã«ãªããŸãã
䜿çšãããå¯èœæ§ããªãããšã確èªããããšããŠããŸããïŒ ïŒ-NS
ç§ãéãããã£ãŒãããã¯ã®ã»ãšãã©ããã人ã ã¯
CompletionStage
ãå«ããRxJavaãåéãæ¢ãã«è¡ããŸãã ãã®ããããã®ããŒãžã§ã³ã¯è²§ä¹äººã®éžæã«ãªããŸãã
確ãã«ãç§ããããå«ãã§ãã
IDEã¯éåžžãéçã€ã³ããŒããèªåçã«è¿œå ããŸãã
ããã¯ããªããæžãããšãã§ããªããšããããšãããã«å¯ŸããŠããªã匷åãªãã€ã³ãã Session
ãã€ã³ããŒãããIDEã®ææ¡ãååŸstatic Mutiny.Session
ããªãã¯åžžã«å
é ã«ãããå
¥åããå¿
èŠããããŸãã®ã§ã Mutiny.Session
ã ãŸãããã¹ãŠã®ããã¥ã¡ã³ãã«ã€ã³ããŒããå«ããå¿
èŠããããããã³ããŒ/貌ãä»ããå°é£ã«ãªããŸãã
ååãããããšãHibernate ORM Reactiveã¯çŽ æŽãããhibernate-orm-reactiveã ãšæããŸããã PanacheRx ãã«ã€ããŠåæ§ã®å€æãè¡ããŸããïŒ
ã¯ãã ããã¯åžžã«ã³ãŒãããŒã ã§ããã
ããã¯ãSessionãèšè¿°ããŠãã€ã³ããŒãããIDEããããŒã¶ã«ãååŸã§ããªããšããããªãã®åŒ·ã¿ã§ãã
ç§ã¯ãããããã»ã©åŒ·ããšã¯æããŠããŸããïŒããããããã¥ã¡ã³ãã«åºå·ããå¿
èŠãããããã«ã圌ãã¯ãŸã Mutiny.SessionFactory
æžãããšãã§ããŸãïŒãããã£ãŠãååãšããŠåžžã«ãããã¹ããããããŸããããã€ã³ããŒããå«ããå¿
èŠã¯ãããŸããïŒ ã
@FroMageããã¯ããã»ã©æªãã¯ãããŸããã intelliJã§ã [èšå®]> [ã³ãŒãã¹ã¿ã€ã«]> [Java]> [ã€ã³ããŒã]ã«ç§»åããŸãã Eclipseã«ã䌌ããããªãã®ããããŸãã
ç§ã®æèŠã§ã¯ãMutinyã¯ããã©ã«ãã®APIãšèŠãªãããã¹ãã§ãã æ®ãã¯ããã€ãã®compat
ããã±ãŒãžã«åé¡ãããå¯èœæ§ããããŸãã CompletionStage/Flow
ããŒãžã§ã³ã§ãã:-)
æŽæ°ïŒ Mutinyã®ããã¥ã¡ã³ããèãããšãäºææ§ã§ãã€ã¯ããããšã¯æå³ããããŸããïŒ ãã®ããã«Mutinyã«é Œãã ãã§ãéçºè ãäžæ¹ããä»æ¹ã«å€æããå¿ èŠãããå Žåã¯ãå€æãè¡ãããã«éçºè ã«ïŒããªãå°ããªïŒè² æ ããããŸãã
Clementã¯Mutinyã«ãã©ã³ããªã³ãè¿œå ããŠããŸããããã¯ãMutinyãReactiveHibernateã®ããã©ã«ãã«ããããã®ãã1ã€ã®æ¯æçãªè°è«ãããããŸããã
ãã®è°è«ã¯ãhibernate-devã¡ãŒãªã³ã°ãªã¹ãã§çºå±ããŸããã ç§ãã¡ã¯çã Hibernate Reactive
è¡ãåŸåãããããã§ã...ããããŸãããïŒ
ã¡ãŒãªã³ã°ãªã¹ãã«è¿ä¿¡ããã®ãæåã§ãããã
ãªãã€ã³ããŒãç»é²ããã«ã¯ã以äžãåç §ããŠãã ããã
å ·äœçã«ã¯ãããã¯ãã®åé¡ã«é¢é£ãã倧ããªã¹ã¬ããã§ãïŒãšãããïŒïŒ
Hibernate Reactiveãããã§ããïŒ
ïŒã·ã£ã³ãã³ïŒ
å ·äœçã«ã¯ãããã¯ãã®åé¡ã«é¢é£ãã倧ããªã¹ã¬ããã§ãïŒãšãããïŒïŒ
ãªããŠå€§ããªã¹ã¬ãããªã®ãã1éã®ã¡ãŒã«ããããŸã;ïŒ
å人çã«ã¯ãHibernateRXã®æ¹ã奜ãã§ããRxJavaããRxããææããŠããããIMOHibernateRXããã£ãããŒãªååã§ããããšã«SanneãšåæããŸãã Hibernate Reactiveã¯ãååãšããããã説æã®ããã«èŠããŸãã ç§ã®0.02ãã«ã ãã§ãããã§ã¡ãŒãªã³ã°ãªã¹ãã®ã¹ã¬ãããä¹±éã«ããããããŸããã§ããã
å人çã«ã¯ãHibernateRXã®æ¹ã奜ãã§ããRxJavaããRxããææããŠããããIMOHibernateRXããã£ãããŒãªååã§ããããšã«SanneãšåæããŸãã Hibernate Reactiveã¯ãååãšããããã説æã®ããã«èŠããŸãã ç§ã®0.02ãã«ã ãã§ãããã§ã¡ãŒãªã³ã°ãªã¹ãã®ã¹ã¬ãããä¹±éã«ããããããŸããã§ããã
@aguibertã®åé¡ã¯ãHibernateRxåã§xãäœã
ãªã¢ã¯ãã£ããšã¯ã¹ãã³ã·ã§ã³ã¯ç¹å®ã®ãã®ã§ãhttps://en.m.wikipedia.org/wiki/Reactive_extensions
ããã§ããHibernateRxã¯åã«ãHibernateReactiveExtensionsãã®ç¥ã ãšæããŸãã Reactive Extensionsã¯ç¹å®ã®ãã®ã§ãããç¹å®ã®è£œåããããžã§ã¯ãã§ã¯ãªããæŠå¿µãæããŸãã ç§ãã¡ãããã§è¡ã£ãŠããIMOã¯ãäŸç¶ãšããŠãã®æŠå¿µã«é©åããŠããŸãã
ãHibernateReactiveããšããååã§ãããŸã§ã«ãªãã»ã©ã³ã³ã»ã³ãµã¹ã«è¿ã¥ããŠããããã«èŠããã®ã§ãç§ããã®ååã§ãŸã£ããåé¡ãããŸããã
ã¡ãŒãªã³ã°ãªã¹ãã®ãšããã¥ãšã«ã®é»åã¡ãŒã«ã®çµæãšããŠåä¹±ããªãã£ãã®ã§ããããéããŸã:)
Hibernate Reactive
ã§ãïŒ ããäžåºŠ@murphyeãšãã¹ãŠã«æè¬ããŸã
ãã©ããŒã¢ããïŒ111
æãåèã«ãªãã³ã¡ã³ã
æ£çŽãªãšãããç§ã¯æ¬¡ã®ãªãã·ã§ã³ããŸããŸã奜ãã«ãªã£ãŠããŸãïŒ
ãŸãïŒ
ãããŠã
Mutiny
ã䜿çšããŠããããšã確å®ã«ããã£ããã次ã®ããã«æžãããšãã§ããŸããã¢ãŠã¿ãŒã¯ã©ã¹ã¯ãèªåã€ã³ããŒãã®å¶çºçãªåé¡ãå€§å¹ ã«è»œæžãããšæããŸãã ïŒãã ããä»ã«ãæ¬ ç¹ããããŸããïŒ