Rx рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдпрд╛рдиреА RxJava) рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд╛рдо рдХреЛ "рд╣рд╛рдЗрдмрд░рдиреЗрдЯ-рд░рд┐рдПрдХреНрдЯрд┐рд╡" рдпрд╛ рдХрд┐рд╕реА рднреА рдЕрдЧреНрд░рд┐рдо рднреНрд░рдо рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рдмрджрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред
@emmanuelbernard WDYT?
рд╣рд╛рдБ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рдХреЛрдб рдирд╛рдо рдерд╛ред
рдареАрдХ рд╣реИ рддреЛ рд╣рдордиреЗ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд╛рдо рдореЗрдВ рдареЛрд╕ рд╣реЛрдиреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИ!
рдореИрдВрдиреЗ рдЗрд╕реЗ рдореБрдЭреЗ рд╕реМрдВрдкрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ, рдЬрдм рддрдХ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдЖрдкрддреНрддрд┐ рди рд╣реЛред
рдореИрдВ рдЗрд╕реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ
рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕рдореЗрдВ рдмрджрд▓рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ?
hibernate-reactive
рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛
>
+1 рд╕реЗ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ-рд░рд┐рдПрдХреНрдЯрд┐рд╡
рдмреБрдзрд╡рд╛рд░, 1 рдЕрдкреНрд░реИрд▓, 2020 рдХреЛ рд╕реБрдмрд╣ 7:45 рдмрдЬреЗ рдбреЗрд╡рд┐рдб рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
hibernate-reactive
рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛>
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/hibernate/hibernate-rx/issues/77#issuecomment-607292426 ,
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AADJJTIRGWQNUSN7FC3WCSLRKNHRJANCNFSM4LX6AEVQ
.
рдпрд╣ рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ ReactiveSession
рдПрдХ рд╣рдЬрд╛рд░ рдмрд╛рд░ рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛...
рдореБрдЭреЗ HibernateRX
: "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓" рд╣реЛрдирд╛ рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рдпрд╣ RxJava рдХрд╛ рдЯреНрд░реЗрдбрдорд╛рд░реНрдХ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рд╣рдЬрд╛рд░ рдмрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕рддреНрд░ рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдкреНрд░рдХрд╛рд░? рдЖрдкрдХреЗ рдХреАрдмреЛрд░реНрдб рдореЗрдВ рд╕реНрдкреЗрд╕ рдмрдЯрди рдирд╣реАрдВ рд╣реИ? :)
рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрддрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛? рдпрд╛ рдУрдЖрд░рдПрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрд╣реБрдд рднреНрд░рдорд┐рдд рд╣реИ?
рд╢рд╛рдпрдж рд╣рдо рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ 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
рдХреЛрдИ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡?
рдореЗрд░реА рдХреЛрдИ рдордЬрдмреВрдд рд╡рд░реАрдпрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдирд╛рдо рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЗрддрдирд╛ рд▓рдВрдмрд╛ рдирд╣реАрдВ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╛ рд╕реБрдкрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
class AbstracRxtEntityPersister extends RxEntityPersister
class AbstracReactivetEntityPersister extends ReactiveEntityPersister
рдпрд╣ рдЕрднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред рдХрднреА-рдХрднреА рдХрдХреНрд╖рд╛рдПрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИрдВ
RxAbstractEntityPersister
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд┐рдХрд▓реНрдк 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛: org.hibernate.reactive.ReactiveSession
рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдмреЗрд╣рддрд░ рд╕реБрдЭрд╛рд╡ рдпрд╛ рдордЬрдмреВрдд рд░рд╛рдп рд╣реИрдВред
рдореИрдВ 3
рд▓рд┐рдП рднреА рд╡реЛрдЯ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж @vietj рдХреА рднреА рдХреЛрдИ рд░рд╛рдп рд╣реИ?
рд╣рд╛рдБ, рдореИрдВ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдЦреАрдВрдЪрд╛ рдФрд░ рдореИрдВ рдЖрдк рд▓реЛрдЧреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ: ReactiveSession
рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред
рдореБрдЭреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреА рдХрдореА рд╕реЗ рдирдлрд░рдд рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╣реИрдХ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣реЛрдЧрд╛ Reactive.Session
, Reactive.Query
, рдЖрджрд┐, рдХреБрдЫ Reactive
рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рд╕реНрдерд┐рд░ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрднреА рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред
рдореБрдЭреЗ рд╡рд┐рдХрд▓реНрдк 2 рдФрд░ 4 рдкрд╕рдВрдж рд╣реИрдВ:
- org.hibernate.rx.Session
- org.hibernate.reactive.Session
рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рдмрддрд╛рдПрдВ рдХрд┐ рдХрдХреНрд╖рд╛рдПрдВ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓" рд╣реИрдВред рдпрджрд┐ рд╣рдореЗрдВ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ Rx/Reactive рдЬреЛрдбрд╝рдирд╛ рд╣реИ рддреЛ рдпрд╣ рд╡рд░реНрдЧреЛрдВ рдХреЛ рджреНрд╡рд┐рддреАрдп рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХреЛрдВ рдХреА рддрд░рд╣ рдмрдирд╛ рджреЗрддрд╛ рд╣реИред
рдЧреИрд░-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕рдордХрдХреНрд╖реЛрдВ рдХреЗ рд╕рдорд╛рди рд╡рд░реНрдЧ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЦреНрдп рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдпрджрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдПрдХ рд╣реА рдХрдХреНрд╖рд╛ рдореЗрдВ рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рд░ рдЬрдЧрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ), рд▓реЗрдХрд┐рди AFAIK рдЬреЛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╣реЛрдирд╛?
рдореБрдЭреЗ рд╡рд┐рдХрд▓реНрдк 2 рдФрд░ 4 рдкрд╕рдВрдж рд╣реИрдВ:
- org.hibernate.rx.Session
- org.hibernate.reactive.Session
рдПрдлрдЯреАрдЖрд░ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рднреА рдареАрдХ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╕реНрд╡рдд: рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рдХрд╛ рдЬреЛрдЦрд┐рдо рдмрдврд╝рд╛рддрд╛ рд╣реИред
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдЕрдВрддрддрдГ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕рддреНрд░ рдХреЗ рдХрдИ рд╕реНрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
MutinySession
рд╡рд┐рджреНрд░реЛрд╣ рдХреЗ рд▓рд┐рдПStagedSession
рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ CompletionStage
рдбрдмреНрд▓реНрдпреВрдбреАрд╡рд╛рдИрдЯреА?
рдХреНрдпрд╛ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд╡рд╛рджреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ?
рдХреНрдпрд╛ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд╡рд╛рджреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ?
"рдореБрдЦреНрдп" рдПрдкреАрдЖрдИ рдореЗрдВ Query
рд╕рдордХрдХреНрд╖реЛрдВ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ "рдЖрд░рдПрдХреНрд╕" рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫреА рдЕрдВрдЧреВрдареА рд╣реИ, рдФрд░ рдпрд╣ рдЖрд░рдПрдХреНрд╕рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ _рд╕реНрд╡рд╛рдорд┐рддреНрд╡_ рдирд╣реАрдВ рд╣реИ - рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдмрддрд╛рдпрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдореИрдВ рдирд╛рдо рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВред
рдЕрдиреБрдмрдВрдз рд╕рдВрд░рдЪрдирд╛ рдкрд░
рдореБрдЭреЗ Session
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЧреЗрд╡рд┐рди рдиреЗ рдмрддрд╛рдпрд╛, рдпрд╣ рдСрдЯреЛ рдкреВрд░реНрдгрддрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдЕрдзрд┐рднрд╛рд░ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП +1:
MutinySession
, RxJava2Session
, JDKReactiveSession
(рд╕рдорд╛рдкрди рдЪрд░рдг рдФрд░ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП)SessionMutiny
, SessionRxJava2
рдЖрджрд┐рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрдЯрд░реНрди рд╣реИ reactiveSession.forMutiny().[...]
, reactiveSession.forJDK().[...]
рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рджреБрдГрд╕реНрд╡рдкреНрди рдХрд╛ рдирд░рдХ рдмрдирд╛ рджреЗрдЧрд╛ред reactiveSession.unwrap(MutinySession.class)
рдореВрд▓реНрдп рдирд╣реАрдВ рд▓рд╛рддрд╛ рд╣реИред
рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдВрдХ:
CompletionStage
рдХрд╛ рднрд╛рдИ рдлреНрд▓реЛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ JDKReactiveSession
RxJavaXSession
рд╡рд┐рдзрд┐ "рдУрд╡рд░рд▓реЛрдбреЗрдб" рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдЬреИрд╕реЗ fetchAsSingle()
рдЖрджрд┐рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Query
рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕рдордХрдХреНрд╖ рднреА рд╣реЛрдЧрд╛ред рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣реБрдЖ рдХрд┐ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд░реИрдкрд░ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ Uni<String>
рдирд╛рдо рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдУрдЖрд░рдПрдо рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдареАрдХ рд╣реИ hibernate-orm-reactive
рд▓реЗрдХрд┐рди @FroMage "Panache Rx" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдЬрд╛рддрд╛ рд╣реИ?
@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 рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХрд╛ рдЕрдВрддрд┐рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рд╡рд░реНрдЧ рдСрдЯреЛ-рдЖрдпрд╛рдд рдХреЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рдЕрдиреНрдп рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВред)
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП?
@ рдбреЗрд╡рд┐рдб рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЖрдИрдбреАрдИ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдерд┐рд░ рдЖрдпрд╛рдд рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред)
@emmanuelbernard рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐
Session
рдФрд░SessionFactory
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрддрдорд╛рди рддрд░реАрдХрд╛ рд╣реИ:RxSessionFactory sessionFactory = emf.unwrap(RxSessionFactory.class); RxSession session = sessionFactory.openRxSession();
рдореИрдВ рдЗрд╕ рдкреИрдЯрд░реНрди рд╕реЗ рдХрд╛рдлреА рдЦреБрд╢ рд╣реВрдВред
JDKReactiveSession
рдЙрд╣ред рдпрд╣ рдЙрд╕ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХреЛрдб рдореЗрдВ рдЗрддрдиреА рдмрд╛рд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдлреАрдбрдмреИрдХ рд╕реЗ, рд▓реЛрдЧ CompletionStage
рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ RxJava рдпрд╛ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рддреЛ рд╡рд╣ рд╕рдВрд╕реНрдХрд░рдг рдЧрд░реАрдм рдЖрджрдореА рдХреА рдкрд╕рдВрдж рд╣реЛрдЧрд╛ред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдлреАрдбрдмреИрдХ рд╕реЗ, рд▓реЛрдЧ рдХрдВрдкреНрд▓реАрд╢рдирд╕реНрдЯреЗрдЬ рд╕реЗ рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ RxJava рдпрд╛ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рддреЛ рд╡рд╣ рд╕рдВрд╕реНрдХрд░рдг рдЧрд░реАрдм рдЖрджрдореА рдХреА рдкрд╕рдВрдж рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реИ? :-рдбреА
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдлреАрдбрдмреИрдХ рд╕реЗ, рд▓реЛрдЧ
CompletionStage
рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ RxJava рдпрд╛ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рддреЛ рд╡рд╣ рд╕рдВрд╕реНрдХрд░рдг рдЧрд░реАрдм рдЖрджрдореА рдХреА рдкрд╕рдВрдж рд╣реЛрдЧрд╛ред
рдЬрд╝рд░реВрд░, рдореБрдЭреЗ рднреА рдЗрд╕рд╕реЗ рдирдлрд░рдд рд╣реИред
рдЖрдИрдбреАрдИ рдЖрдорддреМрд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рдЖрдпрд╛рдд рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
рдпрд╣ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдмрд╣реБрдд рдордЬрдмреВрдд рдмрд┐рдВрджреБ рд╣реИ, рдХрд┐ рдЖрдк Session
рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ static Mutiny.Session
рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдИрдбреАрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рд╕реЗ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ Mutiny.Session
ред рдФрд░ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЖрдпрд╛рдд рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдирд╛рдо рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдУрдЖрд░рдПрдо рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдареАрдХ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ- @FroMage "
рд╣рд╛рдВред рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рдХреЛрдбрдиреЗрдо рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдмрд╣реБрдд рдордЬрдмреВрдд рдмрд┐рдВрджреБ рд╣реИ, рдХрд┐ рдЖрдк рд╕рддреНрд░ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреАрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдордЬрдмреВрдд рд╣реИ: рд╡реЗ рдЕрднреА рднреА Mutiny.SessionFactory
рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╣рдореЗрдВ рд╢рд╛рдпрдж рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЖрдпрд╛рдд рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛, рднрд▓реЗ рд╣реА рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд╣рд┐рдП) .
@FroMage рдпрд╣ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред IntelliJ рдореЗрдВ Settings > Code Style > Java > Imports рдкрд░ рдЬрд╛рдПрдВ ред рдЧреНрд░рд╣рдг рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╣реИред
рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╡рд┐рджреНрд░реЛрд╣ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдкреАрдЖрдИ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╛рдХреА рдХреБрдЫ compat
рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ CompletionStage/Flow
рд╕рдВрд╕реНрдХрд░рдг :-)
рдЕрджреНрдпрддрди рдХрд░реЗрдВ: рд╡рд┐рджреНрд░реЛрд╣ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХреНрдпрд╛ рдпрд╣ рднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдХреЙрдореНрдкреЗрдЯ рдореЗрдВ рд╕реЗрдВрдХрдирд╛ рд╣реИ? рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рджреНрд░реЛрд╣ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ, рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдкрд░ (рдмрд▓реНрдХрд┐ рдЫреЛрдЯрд╛) рдмреЛрдЭ рдбрд╛рд▓реЗрдВ, рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░реЗрдВред
рдХреНрд▓реЗрдореЗрдВрдЯ рд╡рд┐рджреНрд░реЛрд╣ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдореНрдкреЛрд▓рд┐рди рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рджреНрд░реЛрд╣ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рд╣рд╛рдпрдХ рддрд░реНрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдЪрд░реНрдЪрд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ-рджреЗрд╡ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИред рд╣рдо рд╕рднреА Hibernate Reactive
рд╕рд╛рде рдЬрд╛рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ ... рдареАрдХ рд╣реИ?
рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдЙрддреНрддрд░ рджреЗрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рд░рд┐рдорд╛рдЗрдВрдбрд░, рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрдбрд╝рд╛ рд╕реВрддреНрд░ рд╣реИ (рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛):
рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд░рд┐рдПрдХреНрдЯрд┐рд╡, рдареАрдХ рд╣реИ?
:рд╢реИрдВрдкреЗрди:
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрдбрд╝рд╛ рд╕реВрддреНрд░ рд╣реИ (рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛):
рдХреНрдпрд╛ рдмрдбрд╝рд╛ рд╕реВрддреНрд░ рд╣реИ, рдПрдХ рд╣реА рдИрдореЗрд▓ рд╣реИ;)
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЕрднреА рднреА рд╣рд╛рдЗрдмрд░рдиреЗрдЯрдЖрд░рдПрдХреНрд╕ рдмреЗрд╣рддрд░ рдкрд╕рдВрдж рд╣реИ - рдореИрдВ рдбрдмреНрд▓реНрдпреВ/рд╕рдиреЗ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЖрд░рдПрдХреНрд╕рдЬрд╛рд╡рд╛ рдХреЗ рдкрд╛рд╕ "рдЖрд░рдПрдХреНрд╕" рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдИрдПрдордУ рд╣рд╛рдЗрдмрд░рдиреЗрдЯрдЖрд░рдПрдХреНрд╕ рдПрдХ рдЖрдХрд░реНрд╖рдХ рдирд╛рдо рд╣реИред рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдПрдХ рдирд╛рдо рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдмрд╕ рдореЗрд░рд╛ $0.02 рдФрд░ рдореИрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдереНрд░реЗрдб w/рдЗрд╕ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЕрднреА рднреА рд╣рд╛рдЗрдмрд░рдиреЗрдЯрдЖрд░рдПрдХреНрд╕ рдмреЗрд╣рддрд░ рдкрд╕рдВрдж рд╣реИ - рдореИрдВ рдбрдмреНрд▓реНрдпреВ/рд╕рдиреЗ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЖрд░рдПрдХреНрд╕рдЬрд╛рд╡рд╛ рдХреЗ рдкрд╛рд╕ "рдЖрд░рдПрдХреНрд╕" рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдИрдПрдордУ рд╣рд╛рдЗрдмрд░рдиреЗрдЯрдЖрд░рдПрдХреНрд╕ рдПрдХ рдЖрдХрд░реНрд╖рдХ рдирд╛рдо рд╣реИред рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдПрдХ рдирд╛рдо рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдмрд╕ рдореЗрд░рд╛ $0.02 рдФрд░ рдореИрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдереНрд░реЗрдб w/рдЗрд╕ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рд╕рдорд╕реНрдпрд╛ @aguibert рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ Rx рдирд╛рдо рдореЗрдВ x рдХрд╛ рдХреНрдпрд╛
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ https://en.m.wikipedia.org/wiki/Reactive_extensions
рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдЖрд░рдПрдХреНрд╕ рд╕рд┐рд░реНрдл "рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдПрдХреНрд╕рдЯреЗрдВрд╢рди" рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЙрддреНрдкрд╛рдж рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛред рдЖрдИрдПрдордУ рдЬреЛ рд╣рдо рдпрд╣рд╛рдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЕрднреА рднреА рдЙрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЖрдо рд╕рд╣рдорддрд┐ рдХреЗ рдХрд░реАрдм рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХрднреА рднреА "рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд░рд┐рдПрдХреНрдЯрд┐рд╡" рдирд╛рдо рд╕реЗ рдорд┐рд▓реЗрдВрдЧреЗ, рдореИрдВ рдЙрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реВрдВред
рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рдЗрдореИрдиреБрдПрд▓ рдХреЗ рдИрдореЗрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдИ рд╡рд┐рджреНрд░реЛрд╣ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ :)
Hibernate Reactive
рдпрд╣ рд╣реИ! рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж @murphye рдФрд░ рд╕рднреА
#111 . рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рдХреЛ рддреЗрдЬреА рд╕реЗ рдкрд╕рдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
рдпрд╛:
рдФрд░ рдлрд┐рд░, рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ
Mutiny
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдмрд╕ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ:рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рд╡рд░реНрдЧ рдСрдЯреЛ-рдЖрдпрд╛рдд рдХреЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рдЕрдиреНрдп рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВред)