çŸåšã RxPersistenceProvider
ã¯ã¹ããŒãããµããŒãããŠããŸãããã€ãŸããèªåããŒãã«äœæãªã©ã¯JDBCã§è¡ãå¿
èŠããããŸãã
ã¢ããªãRXã®ã¿ã䜿çšããŠããå ŽåããŠãŒã¶ãŒã«JDBCãã©ã€ããŒã®è¿œå /æ§æãèŠæ±ããã®ã¯å°ãåä»ãªããã§ãã çè«çã«ã¯ãJDBCæ¥ç¶ã®ä»£ããã«RxConnectionã䜿çšããŠåãã¹ããŒãçæããã¹ãŠå®è¡ã§ããã¯ãã§ãã
å°ãå€ã§ãã åæã«ãåãæ¥ç¶æååãæ§æããæ¹æ³ãå€ãããªãããã«ããããšæããŸãã å°æ¥çã«ã¯ããŠãŒã¶ãŒã¯Rxã§ORMã䜿çšã§ããããã«ãªãå¯èœæ§ããããå Žåã«ãã£ãŠã¯RxAPIã䜿çšãããå ŽåããããŸãã ORMãŠãŒã¶ãŒã«ãã§ã«éŠŽæã¿ã®ããããããã£ã䜿çšããã®ãè¯ãããšã§ãã
ãã¿ãŸããã ããªããç©ä»¶åã«ã€ããŠè©±ããŠããªãã£ãããšã«æ°ã¥ããŸããã
ã»ãšãã©ã®å Žåã䜿çšããããŠãŒã¹ã±ãŒã¹ããããã©ããçåã«æããŸã
ããŸããŸãªæ§æãã©ã¡ãŒã¿ãŒã
ãã€ãã£ãã®ãªã¢ã¯ãã£ããã©ã€ããŒã«ç¹å®ã®æ©èœãããå Žåã«çºçããå¯èœæ§ããããšæããŸã
ããããã£ã
ãšã«ãããORMã®ãã®ãšåæ§ã®ããããã£ãå¿
èŠã«ãªããšæããŸãã
jdbc
éšåãååããåé€ãããŠããŸãã
ãããŠã1ã€ã®ã¿ã€ãã®ããããã£ã®ã¿ãèšå®ãããŠããå Žåã«äœãèµ·ãããã決å®ããŸãã
éæãåå5æ53åPMã¢ã³ããªã¥ãŒGuibertã§2020幎5æ1æ¥ã«ã¯[email protected]
æžããŸããïŒ
åãããã«ãç©ãäœãããšã§è¡ãéããŠã¯ãããªããšæããŸã
䟿å©/ãªãã¿ã®ããã ããšãã°ãçŸåšãRXã®æ§æããµããŒãããŠããŸãã
jdbcãããã³ã«ã®URLã䟿å©ã§éŠŽæã¿ããããŸãããæè¡çã«ã¯ããã§ã¯ãããŸããã
JDBCã䜿çšããŠããªãã®ã§ãæ£ããã§ããâ
ããªããã³ã¡ã³ãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/hibernate/hibernate-rx/issues/104#issuecomment-622468348 ã
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/AAEIQ5JHS5PQ7M7APGO2YVLRPL5APANCNFSM4MXDM4CA
ã
ãšã«ãããORMãšåæ§ã®ããããã£ãå¿ èŠã«ãªããšæããŸãããååãã
jdbc
éšåãåé€ãããŠããŸãã
次ã®çç±ãããæšæºã®JDBCURL圢åŒã䜿çšããå¿ èŠããããšæããŸãã
@DavideD OPã§åé¡ãé©åã«èª¬æããŠããªãå¯èœæ§ããããŸãããã¹ããŒãçæã®æ§æãã©ã¡ãŒã¿ãŒã¯ã©ã®ããã«æ©èœããŸããïŒ
ãã®åé¡ã§ç§ãæã£ãŠããæå³ãèšãæãããšãJDBCãã©ã€ããŒãjdbcã®ã¿ã®æ§æïŒRXãåãããããã£ãåå©çšããå ŽåïŒãå¿ èŠãšããã«ãããŒãã«ã®èªååé€/äœææé ãå®è¡ã§ããããšããå§ãããŸãã ãããã§ãåé¡ãããŸããïŒ
ãã¿ãŸããã ããªããç©ä»¶åã«ã€ããŠè©±ããŠããªãã£ãããšã«æ°ã¥ããŸããã
ãããããããŸããã ç§ã®æªãã åããŠèªãã ã®ãéãããã
ã¢ããªãRXã®ã¿ã䜿çšããŠããå ŽåããŠãŒã¶ãŒã«JDBCãã©ã€ããŒã®è¿œå /æ§æãèŠæ±ããã®ã¯å°ãåä»ãªããã§ãã
ããã§ã®ãã®æã¯ãORMã«ãã§ã«ååšããJDBCæ§æã®ããããã£ã䜿çšããŠãããšããäºå®ã«ã€ããŠè©±ããŠãããšæããŸããã ããã«ã€ããŠè©±ãåã£ãã®ã¯ä»ã§ãããããšã§ãä»ã®ãšããå€æŽããäºå®ã¯ãããŸããã
ãã®ããã以åã¯ãJDBCãä»ããŠã¹ããŒãã®ãšã¯ã¹ããŒããè¡ãããšã¯ãŸã£ããåé¡ãªããšäž»åŒµããŠããŸããã ïŒãªã¢ã¯ãã£ãã¹ããŒããšã¯ã¹ããŒããšã¯äœã§ããïŒïŒ
ãããã@emmanuelbernardãš@Sanneãšã®é»è©±ã§ã®äŒè©±ã§ãå®éã«å®éã«QuarkusãŠãŒã¶ãŒã®ããã®æœåšçãªçã¿ã®ãã€ã³ãã§ããããšãç§ã®æ³šæã«æ¥ãŠããŸãã
@aguibertãããã«ã€ããŠç§ã«èŠåããããšãããšããç§ã¯ãã£ãšæ³šæãæãã¹ã
ã§ãããããšã«ãããããã¯ç¢ºãã«ç§ãã¡ãåªå ãã¹ãåé¡ã§ãããæåã®ãªãªãŒã¹ã«éã«åãããã«ãããè¡ãããšã¯ã§ããªããšæããŸãã
å¥åŠãªã¢ã€ãã¢-ç§ãæ¬åœã«ç¥ããªãã®ã§ã°ãããŠãããªãèš±ããŠãã ãã-ãããããªã¢ã¯ãã£ããã©ã€ããŒãJDBCäºæã¢ããã¿ãŒã«ã©ããããŠããããã¹ããŒãçæã³ãŒãã«ãã£ãŒãã§ãããã©ããçåã«æã£ãŠããŸããïŒ
ã¹ããŒãã²ã³ããŒã«ã容æã«ããã ããªãããã®ãããªäœæ¥ã¯ããéãã ãšæããŸããããããããã£ãšå€ãã®çšéããããŸããïŒ
@Sanne
ããã«ã¯GenerationTarget
ãšåŒã°ããæœè±¡åããããŸãã ãããå®è£
ã§ãããããããŸãããããã©ã°ã€ã³ããæ¹æ³ã¯100ïŒ
æ£ç¢ºã«ã¯ããããŸããã
ãããã§ããªãå Žåãç§ãã¡ãã§ãããããããªãããšã®1ã€ã¯ãã¹ããŒããšã¯ã¹ããŒãããŒã«ã«SCRIPT
ããšã¯ã¹ããŒãããããã«äŸé Œããã³ãã³ãã1ã€ãã€DBã«éä¿¡ããããšã§ãã
ãããå®è£ ã§ãããããããŸãããããã©ã°ã€ã³ããæ¹æ³ã¯100ïŒ æ£ç¢ºã«ã¯ããããŸããã
åé¡ã¯ããããã®ã¿ãŒã²ããã®ãªã¹ããããŒãã³ãŒãã£ã³ã°ãããŠããããã«èŠããæ°ããã¿ãŒã²ãããè¿œå ããæ確ãªæ¹æ³ããªãããšã§ãã ããããã³ã¢ãžã®å°ããªä¿®æ£ã§ããã解決ã§ãããããããŸããã
Okã ããã¯ãŸã æåªå äºé ã§ã¯ãããŸãããã次ã®ORMã®ãªãªãŒã¹ã¯å¯èœãªéã延æããã®ã§ã誰ããæéãèŠã€ããå Žåã«åããŠãæåŸã®æåŸã®ããããè¿œå ããããšãã§ããŸãã
åèãŸã§ã«ããªãªãŒã¹ã®å®è¡ã«ã¯å®éã«ã¯æéãããããªãããšãèŠããŠãããŠãã ãããçŽ20åã§ãã ããããå®éã«äœ¿çšã§ããããã«ãªãåã«ãMavenã®äžå€®åæãªã©ãåŸ
ã€å¿
èŠããããŸã:(
ããã¯ããªã¢ã¯ãã£ããªãªãŒã¹ãå¯èœã«ãªãçŽ24æéåã«ãªãªãŒã¹ããå¿
èŠãããããšãæå³ããŸãã
ãããè©Šãããã«å°ãæéãåã£ãŠãããŸãã ããããããã¯è¶ ç°¡åã§ãã 調ã¹ãŸãã
ããããããã¯è¶ ç°¡åã§ãã 調ã¹ãŸãã
ãããã£ãŠãå®éãããã¯æ¯èŒçç°¡åã§ããããç§ãèããŠããªãã£ãåé¡ãçºçããŸãããHibernateReactiveã¯JDBCã¡ã¿ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããªããªããããã€ãã®çµæãçããŸãããããã»ã©ã²ã©ããšã¯æããŸããã 幞ããHibernateã¯ãJDBCã¡ã¿ããŒã¿ã®ä¿¡é Œæ§ãéåžžã«äœããå®éã«ã¯äŸåããŠããªããšãã«äœæãããŸããã
倧äžå€«ã ãšæããŸãã
ãŸããHibernate Reactiveãå®éã«JDBCæ¥ç¶ã䜿çšããŠããŒã¿ããŒã¹ããã¹ãããã·ã§ãããååŸããã ForeignKeys
ãã°ãå
¬éããŸããã ãã®åé¡ã«ã€ããŠå¥ã®ãã°ã¬ããŒããéããŸãã
çŽ æŽãããã§ããããããšãïŒ
Gavinã®ä¿®æ£ã¯ORMã«ããŒãžãããŸããã ã¹ããŒãã®äœæã¯ããã§å®è¡å¯èœã«ãªãã¯ãã§ãã
èªååãããã¹ããŒãæŽæ°ã¯ããªãè€éã ãšæããŸãããæåã®ã«ããã§ã¯ããã»ã©éèŠã§ã¯ãªãããšã«åæã§ããŸããïŒ
Gavinã®ä¿®æ£ã¯ORMã«ããŒãžãããŸããã ã¹ããŒãã®äœæã¯ããã§å®è¡å¯èœã«ãªãã¯ãã§ãã
ããããšãã
èªååãããã¹ããŒãæŽæ°ã¯ããªãè€éã ãšæããŸãã
çŸåšã®å®è£ ã¯å®å šã«JDBCã¡ã¿ããŒã¿ãIIRCã«åºã¥ããŠããããããããã¯ããã«å°é£ã§ãã
ãããæåã®ã«ããã«ãšã£ãŠããã»ã©éèŠã§ã¯ãªãããšã«åæã§ããŸããïŒ
ãããç§ã¯ãã®æ®µéã§ããã«åãçµãã€ããã¯å šããããŸããã ãŸãããããå¿ èŠã ãšã¯æããŸããã
@Sanneã¯ããã®å€æŽãå ããããORMã³ã¢ã®ãªãªãŒã¹ãååŸãããŸã§ã©ã®ããã
@gavinkingæææ¥ã«ãªãªãŒã¹ãèšç»ã§ããŸãã ã§ãããã£ãšå€æŽãå¿
èŠãªå Žåã¯ã延æããã®ãæåãããããŸããã
Quarkusãå¿
èŠãšããä»ã®ããã€ãã®ä¿®æ£ã«ãåãçµãã§ããŸãããã®ããããã€ã§ã1ã€ããªãªãŒã¹ã§ããŸãããåŸã§ä¿®æ£ãå¢ããŸãã
@Sanneãã£ãããšã¯èšããŸããããã®ã³ã¡ã³ãã¯ç§ãïŒ113ã®æ·±å»ããçºèŠããåã«è¡ãããŸããã
@gavinkingããæç¹ã§ãVertx-sql-clientã«ãHibernateã«å¿ èŠãªDBã¡ã¿ããŒã¿ã®çš®é¡ã®æŠèŠã説æããåé¡ãèšè¿°ã§ããŸããïŒ Vertxã¯ã©ã€ã¢ã³ãã«ã¯ãçŸåšãããåªããã¡ã¿ããŒã¿APIãå¿ èŠã§ãã
ã¢ã³ããªã¥ãŒã®+1ïŒ
Postgresçšã®ã¡ã¿ããŒã¿ãã§ããAPIãæ§ç¯ããã€ãã·ã¢ããããããŸã
https://github.com/eclipse-vertx/vertx-sql-client/pull/513ã ãã£ãŒãããã¯ã¯
確ãã«ããããäžå¿ã«ãããåªããæ±çšAPIãæ§ç¯ããã®ã«åœ¹ç«ã¡ãŸãã
21:58ã¢ã³ããªã¥ãŒGuibertã®æšã2020幎5æ14æ¥ã«ã¯[email protected]
æžããŸããïŒ
@gavinking https://github.com/gavinkingããæç¹ã§ãããªãã¯æžãããšãã§ããŸãã
Vertx-sql-clientã§ãDBã¡ã¿ããŒã¿ã®çš®é¡ã®æŠèŠã説æããåé¡ãåãäžããŸã
Hibernateã«å¿ èŠã§ããïŒ Vertxã¯ã©ã€ã¢ã³ãã«ã¯ããåªããã¡ã¿ããŒã¿APIãå¿ èŠã§ã
ãã€ãçŸåšããããâ
ãã®ã¹ã¬ããã«ãµãã¹ã¯ã©ã€ãããŠããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/hibernate/hibernate-reactive/issues/104#issuecomment-628654875 ã
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/ABJV4JODSAYQT7BG2TWHZI3RRP2JFANCNFSM4MXDM4CA
ã
ã¹ããŒã管çããŒã«ã«å¿
èŠãªã®ã¯information_schema.tables
ã®æ
å ±ãžã®ã¢ã¯ã»ã¹ã§ããã information_schema.key_column_usage
ãæšæž¬ããŸãã
ã¹ããŒã管çããŒã«ã«å¿ èŠãªã®ã¯
information_schema.tables
ã®æ å ±ãžã®ã¢ã¯ã»ã¹ã§ãããinformation_schema.key_column_usage
ãæšæž¬ããŸãã
1ã€ã®ãªãã·ã§ã³ã¯ã information_schema
ã¯ãšãªããŠãã®æ
å ±ãçŽæ¥ååŸããããšã§ãã æŽå²çã«ã¯ããã©ãããã©ãŒã ã®éãããæœè±¡åããããã«ããã®ããã®JDBCã¡ã¿ããŒã¿APIã ãã§ãã
ããã§å®äºã§ãã
ãããŠãããã¯ãŠãŒã¶ãŒã«å¯ŸããŠããªãééçãªæ¹æ³ã§è¡ãããŸããJDBCãã©ã€ããŒãŸãã¯æ¥ç¶ããŒã«ãèšå®ãããŠããå ŽåãHibernate ORMã¯JDBCãä»ããŠã¹ããŒãã®ãšã¯ã¹ããŒããè¡ããŸãããJDBCãã©ã€ããŒããªãå Žåã¯ãã¹ããŒãããšã¯ã¹ããŒãããŸãã Vert.xãã©ã€ããŒãèµ·åããŸãã
ãããïŒ
ã©ããããããšã
ãããŠãããã¯ãŠãŒã¶ãŒã«å¯ŸããŠããªãééçãªæ¹æ³ã§è¡ãããŸããJDBCãã©ã€ããŒãŸãã¯æ¥ç¶ããŒã«ãèšå®ãããŠããå ŽåãHibernate ORMã¯JDBCãä»ããŠã¹ããŒãã®ãšã¯ã¹ããŒããè¡ããŸãããJDBCãã©ã€ããŒããªãå Žåã¯ãã¹ããŒãããšã¯ã¹ããŒãããŸãã Vert.xãã©ã€ããŒãèµ·åããŸãã
奜å¥å¿ã匷ãã®ã§ããããªãæåã«JDBCã¢ãããŒãã䜿çšããå¿ èŠãããã®ã§ããããã vertxäžã§å®è¡ããæ©èœãããå Žåã¯ãåžžã«å®è¡ããŠã¿ãŸãããïŒ
ç¡é¢ä¿ãªæ¥ç¶ãã»ããã¢ãããããŠãããšããçç±ã ãã§ããŸããŸãªåäœãããªã¬ãŒããããšããŠãŒã¶ãŒãæ··ä¹±ããå¯èœæ§ããããŸãã ãŸããä»ã®æ¥ç¶ãå®éã«åãDBãæããŠãããã©ãããã©ã®ããã«ããŠç¥ãããšãã§ããŸããïŒ
奜å¥å¿ã匷ãã®ã§ããããªãæåã«JDBCã¢ãããŒãã䜿çšããå¿ èŠãããã®ã§ããããã vertxäžã§å®è¡ããæ©èœãããå Žåã¯ãåžžã«å®è¡ããŠã¿ãŸãããïŒ
éåžžã®Hibernateãéåžžã®JDBCãã©ã€ããŒã§ã»ããã¢ããããŠããå Žåã¯ãããã䜿çšããªãã®ã¯ãªãã§ããïŒ ãªã¢ã¯ãã£ãã¹ããŒããšã¯ã¹ããŒãã¯æå³ã®ãããã®ã§ã¯ãããŸããã ãããæ©èœãããã«ã¯ãæåŸã«å®å
šã«åä»ãªjoin()
ãå®è¡ããå¿
èŠããããŸãããVert.xã¯ãããéåžžã«äžå¿«ã«æããŠããŸãã
ä»ã®æ¥ç¶ãæ¬åœã«åãDBãæããŠãããã©ãããã©ããã£ãŠç¥ãã®ã§ããïŒ
åãJDBCURLã§ããïŒ