ãããããã«ïŒ
ç§ãã¡ã¯ãã®ããŒãã«ã€ããŠç 究ãç¶ããŠããŸã
ãã®ããªãé
ããèšäºã§ã¯ãã»ãšãã©ãã¹ãŠã®å Žåãã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ ã¢ãã«ã¯ãJava ã®æ©èœã(ãŸãã¯äœ¿çšããŠããã¯ã©ã€ã¢ã³ãèšèª) ã§ã¯ãªããããŒã¿ããŒã¹ãã«åºã¥ããŠèšèšãããã¹ãã§ãããšç§ãèããçç±ã説æããŸããäžç·ã«åãïŒã XNUMX çªç®ã®ã¢ãããŒããåããšããããžã§ã¯ããæé·ãå§ãããšãçã¿ãšèŠãã¿ã®é·ãéãæ©ãããšã«ãªããŸãã
ãã®èšäºã¯ä»¥äžãããšã«æžãããŸãã
reddit ã§ã®èå³æ·±ããã£ã¹ã«ãã·ã§ã³ãã»ã¯ã·ã§ã³ããšã«ãŸãšãããã®
ã³ãŒãçæ
jOOQ ã®ããšãããç¥ã£ãŠããŠãjOOQ ããœãŒã¹ ã³ãŒãçæã«å€§ããäŸåããŠåäœããŠãããšããäºå®ã«æ¿æããŠãããŠãŒã¶ãŒãéåžžã«å°æ°ã§ããããšã«ãç§ã¯ãšãŠãé©ããŸããã ããªããé©åã ãšæã jOOQ ã䜿çšããããšã誰ãæ¢ããããã³ãŒãçæã®äœ¿çšã匷å¶ããããã人ã¯ããŸããã ããããjOOQ ãæ±ãããã©ã«ãã® (ããã¥ã¢ã«ã«èšèŒãããŠãã) æ¹æ³ã§ã¯ã(ã¬ã¬ã·ãŒ) ããŒã¿ããŒã¹ ã¹ããŒãããéå§ããjOOQ ã³ãŒã ãžã§ãã¬ãŒã¿ãŒã䜿çšããŠããããªããŒã¹ ãšã³ãžãã¢ãªã³ã°ããããã«ãã£ãŠããŒãã«ãè¡šãã¯ã©ã¹ã®ã»ãããååŸããåãæžã蟌ã¿ãŸãã -ãããã®ããŒãã«ã«å¯Ÿããå®å šãªã¯ãšãª:
for (Record2<String, String> record : DSL.using(configuration)
// ^^^^^^^^^^^^^^^^^^^^^^^ ÐÐœÑПÑЌаÑÐžÑ ÐŸ ÑОпаÑ
вÑвеЎеМа Ма
// ПÑМПваМОО ÑгеМеÑОÑПваММПгП кПЎа, Ма кПÑПÑÑй ÑÑÑлаеÑÑÑ Ð¿ÑОвеЎеММПе
// МОже ÑÑлПвОе SELECT
.select(ACTOR.FIRST_NAME, ACTOR.LAST_NAME)
// vvvvv ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ÑгеМеÑОÑПваММÑе ОЌеМа
.from(ACTOR)
.orderBy(1, 2)) {
// ...
}
ã³ãŒãã¯ã¢ã»ã³ããªã®å€éšã§æåã§çæãããããåã¢ã»ã³ããªã§æåã§çæãããŸãã ããšãã°ããã®ãããªåçã¯ã
ãœãŒã¹ã³ãŒãã®çæ
ã³ãŒãçæ (æåããã³èªå) ã«å¯Ÿãããããã®ã¢ãããŒãã«ã¯ãããŸããŸãªå²åŠãé·æãšçæããããŸããããã®èšäºã§ã¯è©³ãã説æããŸããã ããããäžè¬ã«ãçæãããã³ãŒãã®éèŠãªç¹ã¯ãã·ã¹ãã å ãŸãã¯ã·ã¹ãã å€ã§ãç§ãã¡ãåœããåã ãšæã£ãŠãããçå®ãã Java ã§åçŸã§ãããšããããšã§ãã ããæå³ãããã¯ã³ã³ãã€ã©ããã€ãã³ãŒãããã·ã³ã³ãŒãããŸãã¯ãã®ä»ã®åœ¢åŒã®ãœãŒã¹ã³ãŒããçæãããšãã«è¡ãããšã§ããç¹å®ã®çç±ã«é¢ä¿ãªããç§ãã¡ã¯ãçå®ããå¥ã®èšèªã§è¡šçŸããŸãã
ãã®ãããªã³ãŒããžã§ãã¬ãŒã¿ãŒã¯ãããããããŸãã äŸãã°ã
- äœããã®çå® (å éšãŸãã¯å€éš) ãååšããŸããããšãã°ãä»æ§ãããŒã¿ã¢ãã«ãªã©ã§ãã
- ãã®çå®ãããã°ã©ãã³ã°èšèªã§ããŒã«ã«ã«è¡šçŸããå¿ èŠããããŸãã
ããã«ãåé·æ§ãé¿ããããã«ããã®ãããªè¡šçŸãçæããããšãã»ãšãã©ã®å Žåæšå¥šãããŸãã
ã¿ã€ããããã€ããŒãšã¢ãããŒã·ã§ã³åŠç
泚: jOOQ ã®ã³ãŒããçæããå¥ã®ãããçŸä»£çã§å
·äœçãªã¢ãããŒãã¯ãã¿ã€ã ãããã€ããŒã䜿çšããããšã§ãã
ããæå³ã§ã¯ãããã§ãæåã®ã±ãŒã¹ãšåãããšãèµ·ãããŸããã次ã®ç¹ãç°ãªããŸãã
- çæãããã³ãŒãã¯è¡šç€ºãããŸãã (ããããããã®ç¶æ³ã«ããŸãäžå¿«æãæããªã人ãããã§ãããã?)
- åãæäŸã§ããããšã確èªããå¿ èŠããããŸããã€ãŸãããtrueããåžžã«äœ¿çšå¯èœã§ããå¿ èŠããããŸãã ãçå®ãã«æ³šéãä»ãããã³ãã¯å³¶ã®å Žåãããã¯ç°¡åã§ãã åžžã«å©çšå¯èœãªã©ã€ãæ¥ç¶ã«äŸåããããŒã¿ããŒã¹ ã¢ãã«ã®å Žåã¯ãå°ãè€éã«ãªããŸãã
ã³ãŒãçæã®åé¡ã¯äœã§ãã?
ã³ãŒãçæãæåãŸãã¯èªåã§å®è¡ããã®ã«æé©ãªæ¹æ³ãšããé£ããåé¡ã«å ããŠãã³ãŒãçæã¯ãŸã£ããå¿ èŠãªããšä¿¡ããŠãã人ãããããšã«ãèšåããªããã°ãªããŸããã ãã®èŠ³ç¹ã®æ£åœåã¯ãç§ãæãé »ç¹ã«ééããããšã§ããããã«ã ãã€ãã©ã€ã³ãã»ããã¢ããããã®ãé£ãããšããããšã§ãã ã¯ããæ¬åœã«é£ããã§ãã è¿œå ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã¹ããçºçããŸãã ç¹å®ã®è£œå (jOOQãJAXBãHibernate ãªã©) ã䜿ãå§ããã°ããã®å Žåãå®çšŒåç°å¢ã®ã»ããã¢ããã«ã¯æéããããããããããã䟡å€ãåŒãåºãããã« API èªäœã®åŠç¿ã«æéãè²»ãããã»ããããã§ãããã ã
ãžã§ãã¬ãŒã¿ãŒã®æ§é ãç解ããããšã«é¢é£ããã³ã¹ããé«ãããå Žåã確ãã«ãAPI ã¯ã³ãŒã ãžã§ãã¬ãŒã¿ãŒã®äœ¿ããããã«é¢ããŠäžååãªä»äºãããŠãããšããããšã«ãªããŸã (ãããŠããã®åŸãã³ãŒã ãžã§ãã¬ãŒã¿ãŒã§ã®ãŠãŒã¶ãŒã®ã«ã¹ã¿ãã€ãºãé£ããããšãå€æããŸãã)ã ãã®ãã㪠API ã§ã¯ã䜿ãããããæåªå ãããå¿ èŠããããŸãã ããããããã¯ã³ãŒãçæã«å¯Ÿããåè«ã® XNUMX ã€ã«ãããŸããã ãã以å€ã®å Žåãå éšãŸãã¯å€éšã®çå®ã®ããŒã«ã«è¡šçŸãèšè¿°ããã®ã¯å®å šã«æåã§ãã
å€ãã®äººã¯ããããã¹ãŠãè¡ãæéããªããšèšãã§ãããã 圌ãã¯ã¹ãŒããŒãããã¯ãã®æéãéããŠããŸãã ãã€ãçµã¿ç«ãŠã³ã³ãã¢ãæŽçæŽé ããŸããæéã¯ãããŸãã ç§ã¯ãããã«çããŸãïŒ
ããããHibernate/JPA ã§ã¯ Java ã³ãŒããæžãã®ã¯ãšãŠãç°¡åã§ãã
æ¬åœã«ã Hibernate ãšãã®ãŠãŒã¶ãŒã«ãšã£ãŠãããã¯ç¥çŠã§ããããåªãã§ããããŸãã Hibernate ã§ã¯ã次ã®ããã«ããã€ãã®ãšã³ãã£ãã£ãç°¡åã«æžãããšãã§ããŸãã
@Entity
class Book {
@Id
int id;
String title;
}
ãããŠã»ãŒãã¹ãŠã®æºåãæŽããŸããã ãã®ãšã³ãã£ãã£ã SQL ãæ¹èšãã® DDL ã§ã©ã®ããã«æ£ç¢ºã«å®çŸ©ããããã«ã€ããŠã®è€éãªã詳现ããçæããã®ã¯ãHibernate ã®åœ¹å²ã§ãã
CREATE TABLE book (
id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
title VARCHAR(50),
CONSTRAINT pk_book PRIMARY KEY (id)
);
CREATE INDEX i_book_title ON book (title);
...ãããŠã¢ããªã±ãŒã·ã§ã³ã®å®è¡ãéå§ããŸãã ããã«å§ããŠããŸããŸãªããšãè©Šãã«ã¯éåžžã«çŽ æŽãããæ©äŒã§ãã
ãã ãããèš±ããã ããã ãããã€ããŠããã
- Hibernate ã¯å®éã«ãã®ååä»ãäž»ããŒã®å®çŸ©ã匷å¶ããŸãã?
- Hibernate 㯠TITLE ã«ã€ã³ããã¯ã¹ãäœæããŸãã? â ãããå¿ èŠã«ãªãããšã¯ç¢ºãã§ãã
- Hibernate ã¯ãã®ããŒã ID ä»æ§ã§æ£ç¢ºã«èå¥ããã®ã§ãããã?
ããããããã§ã¯ãããŸããã ãããžã§ã¯ããæåããéçºããŠããå Žåã¯ãå€ãããŒã¿ããŒã¹ãåçŽã«ç Žæ£ããå¿ èŠãªæ³šéãè¿œå ãããããã«æ°ããããŒã¿ããŒã¹ãçæãããšäŸ¿å©ã§ãã ãããã£ãŠãBook ãšã³ãã£ãã£ã¯æçµçã«æ¬¡ã®åœ¢åŒã«ãªããŸãã
@Entity
@Table(name = "book", indexes = {
@Index(name = "i_book_title", columnList = "title")
})
class Book {
@Id
@GeneratedValue(strategy = IDENTITY)
int id;
String title;
}
ãããã åçããŸãã ãã®å Žåããæåã¯éåžžã«ç°¡åã§ãã
ã§ãåŸã§ãéãæ¯æããªããã°ãªããŸãã
é ããæ©ãããæ¬çªç°å¢ã«ç§»è¡ããå¿ èŠããããŸãã ãã®æç¹ã§ãã®ã¢ãã«ã¯æ©èœããªããªããŸãã ãªããªãïŒ
éçšç°å¢ã§ã¯ãå¿ èŠã«å¿ããŠå€ãããŒã¿ããŒã¹ãç Žæ£ããŠæåããéå§ããããšã¯ã§ããªããªããŸãã ããŒã¿ããŒã¹ã¯ã¬ã¬ã·ãŒã«ãªããŸãã
ãããããæ°žé ã«ãããªãã¯æžããªããã°ãªããŸãã
ãããã£ãŠãéçšãéå§ããããããã ããããå¿ èŠã«ãªããŸãã ãããŠããããã¯éåžžã«è¿ éã«æ¬çªç°å¢ã«å°å ¥ãããå¿ èŠããããŸãã æºåãããŠããããæ¬çªç°å¢ãžã®ç§»è¡ã®ã¹ã ãŒãºãªãã€ãã©ã€ã³ãæŽçããŠããªãã£ãããããã¹ãŠã«ä¹±æŽã«ããããåœãŠãŠããŸãã ãããŠããã¹ãŠãæ£ããè¡ãæéã¯ãããããŸããã ãããŠããªã㯠Hibernate ãæ¹å€ããŸããããã¯åžžã«èª°ãã®ããã§ãããããªãã ãã§ã¯ãªãããã§ã...
ããããæåãããŸã£ããç°ãªãããæ¹ã§ç©äºãé²ããããšãã§ããã¯ãã§ãã ããšãã°ãèªè»¢è»ã«äžžãè»èŒªãä»ããŸãã
ããŒã¿ããŒã¹ãå
ããŒã¿ããŒã¹ ã¹ããŒãã®æ¬åœã®ãçå®ããšããã«å¯Ÿããã䞻暩ãã¯ããŒã¿ããŒã¹å
ã«ãããŸãã ã¹ããŒãã¯ããŒã¿ããŒã¹èªäœã§ã®ã¿å®çŸ©ãããä»ã®å Žæã§ã¯å®çŸ©ããããåã¯ã©ã€ã¢ã³ãã¯ãã®ã¹ããŒãã®ã³ããŒãæã£ãŠãããããã¹ããŒããžã®æºæ ãšãã®æŽåæ§ã匷å¶ããæ
å ±ãä¿åãããŠããããŒã¿ããŒã¹å
ã§æ£ããå®è¡ããããšã¯å®å
šã«çã«ããªã£ãŠããŸããä¿ç®¡ãããŠããŸãã
ããã¯å€ããŠããããããªç¥æµã§ãã äž»ããŒãšäžæããŒã¯é©åã§ãã å€éšããŒã¯äŸ¿å©ã§ãã å¶éã確èªããã®ã¯è¯ãããšã§ãã
ããã«ãããã ãã§ã¯ãããŸããã ããšãã°ãOracle ã䜿çšããå Žåã¯ã次ã®ããã«æå®ãããšããã§ãããã
- ããŒãã«ã¯ã©ã®ããŒãã«ã¹ããŒã¹ã«ãããŸãã?
- PCTFREE å€ã¯ã©ããããã§ãã?
- ã·ãŒã±ã³ã¹å ã®ãã£ãã·ã¥ ãµã€ãº (ID ã®åŸã) ã¯ã©ããããã§ãã?
ããã¯å°èŠæš¡ã·ã¹ãã ã§ã¯éèŠã§ã¯ãªããããããŸããããããã° ããŒã¿é åã«ç§»è¡ãããŸã§åŸ ã€å¿ èŠã¯ãããŸãããäžèšã®ãããªãã³ããŒæäŸã®ã¹ãã¬ãŒãžæé©åã®æ©æµãããæ©ãåãå§ããããšãã§ããŸãã ç§ãèŠã ORM (jOOQ ãå«ã) ã®ã©ãããããŒã¿ããŒã¹ã§äœ¿çšããå¿ èŠããã DDL ãªãã·ã§ã³ã®å®å šãªã»ãããžã®ã¢ã¯ã»ã¹ãæäŸããŸããã§ããã ORM ã¯ãDDL ã®äœæã«åœ¹ç«ã€ããã€ãã®ããŒã«ãæäŸããŸãã
ããããçµå±ã®ãšãããé©åã«èšèšãããå路㯠DDL ã§ææžãã§äœæãããŸãã çæããã DDL ã¯ããã®è¿äŒŒå€ã«ãããŸããã
ã¯ã©ã€ã¢ã³ãã¢ãã«ã«ã€ããŠã¯ã©ãã§ãã?
äžã§è¿°ã¹ãããã«ãã¯ã©ã€ã¢ã³ãã§ã¯ããŒã¿ããŒã¹ ã¹ããŒãã®ã³ããŒãã¯ã©ã€ã¢ã³ã ãã¥ãŒãå¿ èŠã«ãªããŸãã èšããŸã§ããªãããã®ã¯ã©ã€ã¢ã³ã ãã¥ãŒã¯å®éã®ã¢ãã«ãšåæããŠããå¿ èŠããããŸãã ãããéæããããã®æåã®æ¹æ³ã¯äœã§ãããã? ã³ãŒããžã§ãã¬ãŒã¿ãŒã䜿çšããã
ãã¹ãŠã®ããŒã¿ããŒã¹ã¯ SQL çµç±ã§ã¡ã¿æ å ±ãæäŸããŸãã ããŸããŸãª SQL èšèªã§ããŒã¿ããŒã¹ãããã¹ãŠã®ããŒãã«ãååŸããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
-- H2, HSQLDB, MySQL, PostgreSQL, SQL Server
SELECT table_schema, table_name
FROM information_schema.tables
-- DB2
SELECT tabschema, tabname
FROM syscat.tables
-- Oracle
SELECT owner, table_name
FROM all_tables
-- SQLite
SELECT name
FROM sqlite_master
-- Teradata
SELECT databasename, tablename
FROM dbc.tables
ãããã®ã¯ãšãª (ãŸãã¯ããã¥ãŒããããªã¢ã©ã€ãºã ãã¥ãŒãããŒãã«å€é¢æ°ãèæ
®ããå¿
èŠããããã©ããã«å¿ããŠåæ§ã®ã¯ãšãª) ããåŒã³åºãã«ãã£ãŠå®è¡ãããŸãã DatabaseMetaData.getTables()
ãã®ãããªã¯ãšãªã®çµæãããã¯ã©ã€ã¢ã³ãã§ã©ã®ãããªãã¯ãããžã䜿çšããŠãããã«é¢ä¿ãªããããŒã¿ããŒã¹ ã¢ãã«ã®ã¯ã©ã€ã¢ã³ãåŽè¡šçŸãçæããã®ã¯æ¯èŒçç°¡åã§ãã
- JDBC ãŸã㯠Spring ã䜿çšããŠããå Žåã¯ãæååå®æ°ã®ã»ãããäœæã§ããŸãã
- JPAã䜿çšãããšãšã³ãã£ãã£èªäœãçæã§ããŸã
- jOOQ ã䜿çšãããšãjOOQ ã¡ã¿ã¢ãã«ãçæã§ããŸãã
ã¯ã©ã€ã¢ã³ã API (jOOQ ã JPA ãªã©) ã«ãã£ãŠæäŸãããæ©èœã®éã«å¿ããŠãçæãããã¡ã¿ ã¢ãã«ã¯éåžžã«è±å¯ã§å®å
šãªãã®ã«ãªãå¯èœæ§ããããŸãã ããšãã°ãæé»çãªçµåã®å¯èœæ§ãèããŠã¿ãŸãããã
ããã§ãããŒã¿ããŒã¹ãå¢å ãããšãã¯ã©ã€ã¢ã³ã ã³ãŒããèªåçã«æŽæ°ãããŸãã ããšãã°æ¬¡ã®ããšãæ³åããŠãã ããã
ALTER TABLE book RENAME COLUMN title TO book_title;
æ¬åœã«ãã®ä»äºã XNUMX åããããã§ãã? ã©ããªå Žåã«ãã DDL ãã³ããããããã«ã ãã€ãã©ã€ã³ãéããŠå®è¡ããæŽæ°ããããšã³ãã£ãã£ãååŸããã ãã§ãã
@Entity
@Table(name = "book", indexes = {
// ÐÑ ÐŸÐ± ÑÑПЌ заЎÑÐŒÑвалОÑÑ?
@Index(name = "i_book_title", columnList = "book_title")
})
class Book {
@Id
@GeneratedValue(strategy = IDENTITY)
int id;
@Column("book_title")
String bookTitle;
}
ãŸãã¯æŽæ°ããã jOOQ ã¯ã©ã¹ã ã»ãšãã©ã® DDL å€æŽã¯ãæ§æã ãã§ãªãã»ãã³ãã£ã¯ã¹ã«ã圱é¿ããŸãã ãããã£ãŠãã³ã³ãã€ã«ãããã³ãŒãã調ã¹ãŠãã©ã®ã³ãŒããããŒã¿ããŒã¹ã®å¢åã«ãã£ãŠåœ±é¿ãåãã (ãŸãã¯åœ±é¿ãåããå¯èœæ§ããã) ãã確èªãããšäŸ¿å©ã§ãã
å¯äžã®çå®
ã©ã®ãããªãã¯ãããžã䜿çšãããã«é¢ä¿ãªãããµãã·ã¹ãã ã«ãšã£ãŠå¯äžã®çå®ã®æ
å ±æºãšãªãã¢ãã«ã¯åžžã« XNUMX ã€ãããŸãããããã¯ãå°ãªããšããããç®æããŠåªåãããçå®ããã©ãã«ã§ãååšããåæã«ã¯ã©ãã«ãååšããªããããªäŒæ¥ã®æ··ä¹±ãé¿ããå¿
èŠããããŸãã ã ãã¹ãŠããã£ãšã·ã³ãã«ã«ãªãå¯èœæ§ããããŸãã XML ãã¡ã€ã«ãä»ã®ã·ã¹ãã ãšäº€æããã ãã®å Žåã¯ãXSD ã䜿çšããŠãã ããã jOOQ ã® INFORMATION_SCHEMA ã¡ã¿ã¢ãã«ã XML 圢åŒã§èŠãŠã¿ãŸãããã
- XSD ã¯ããç解ãããŠããŸã
- XSD 㯠XML ã³ã³ãã³ããé©åã«ããŒã¯ã³åãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãèšèªã§ã®æ€èšŒãå¯èœã«ããŸã
- XSD ã¯é©åã«ããŒãžã§ã³ç®¡çãããŠãããé«åºŠãªäžäœäºææ§ãåããŠããŸã
- XSD ã¯ãXJC ã䜿çšã㊠Java ã³ãŒãã«å€æã§ããŸã
æåŸã®ç¹ãéèŠã§ãã XML ã¡ãã»ãŒãžã䜿çšããŠå€éšã·ã¹ãã ãšéä¿¡ããå Žåãã¡ãã»ãŒãžãæå¹ã§ããããšã確èªããå¿ èŠããããŸãã ããã¯ãJAXBãXJCãXSD ã䜿çšãããšéåžžã«ç°¡åã«å®çŸã§ããŸãã ã¡ãã»ãŒãžã Java ãªããžã§ã¯ããšããŠäœæãããJava ãã¡ãŒã¹ããèšèšã¢ãããŒãã䜿çšããŠãã¡ãã»ãŒãžãäœããã®åœ¢ã§äžè²«ã㊠XML ã«ãããã³ã°ããå¥ã®ã·ã¹ãã ã«éä¿¡ããŠæ¶è²»ã§ãããšèããã®ã¯ãŸã£ããã®çæ°ã§ãããã ãã®æ¹æ³ã§çæããã XML ã¯å質ãéåžžã«äœããææžåãããŠããããéçºãå°é£ã§ãã ãã®ãããªã€ã³ã¿ãŒãã§ã€ã¹ã«ãµãŒãã¹ ã¬ãã« ã¢ã°ãªãŒã¡ã³ã (SLA) ããã£ãå Žåãç§ãã¡ã¯ããã«ãããå°ç¡ãã«ããã§ãããã
æ£çŽãªãšããããã㯠JSON API ã§ã¯åžžã«èµ·ãã£ãŠããããšã§ãããããã¯ãŸãå¥ã®è©±ã§ãã次åã¯å§å©ããŸã...
ããŒã¿ããŒã¹: ãããã¯åããã®ã§ã
ããŒã¿ããŒã¹ãæäœãããšããããã¯ãã¹ãŠåºæ¬çã«äŒŒãŠããããšãããããŸãã åºå°ã¯ãã®ããŒã¿ãææããŠãããã¹ããŒã ã管çããå¿ èŠããããŸãã å¯äžã®ä¿¡é Œã§ããæ å ±æºãæŽæ°ãããããã«ãã¹ããŒãã«å ããå€æŽã¯ãã¹ãŠ DDL ã«çŽæ¥å®è£ ããå¿ èŠããããŸãã
ãœãŒã¹ã®æŽæ°ãè¡ããããšããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ã®ã³ããŒãæŽæ°ããå¿ èŠããããŸãã äžéšã®ã¯ã©ã€ã¢ã³ãã¯ãjOOQ ãš Hibernate ãŸã㯠JDBC (ãããã¯ãã®äž¡æ¹) ã䜿çšã㊠Java ã§äœæã§ããŸãã ä»ã®ã¯ã©ã€ã¢ã³ã㯠Perl ã§äœæã§ããŸãã (æåãç¥ãã°ããã§ã)ãä»ã®ã¯ã©ã€ã¢ã³ã㯠C# ã§äœæã§ããŸãã ããã¯åé¡ã§ã¯ãããŸããã ã¡ã€ã³ã¢ãã«ã¯ããŒã¿ããŒã¹å ã«ãããŸãã ORM ã䜿çšããŠçæãããã¢ãã«ã¯éåžžãå質ãäœããææžåãäžååã§ãéçºãå°é£ã§ãã
ã ãããééããç¯ããªãã§ãã ããã æåããééããªãããã«ããŸãããã ããŒã¿ããŒã¹ããäœæ¥ããŸãã èªååã§ãããããã€ã¡ã³ã ãã€ãã©ã€ã³ãæ§ç¯ããŸãã ã³ãŒã ãžã§ãã¬ãŒã¿ãŒãæå¹ã«ãããšãããŒã¿ããŒã¹ ã¢ãã«ãç°¡åã«ã³ããŒããŠã¯ã©ã€ã¢ã³ãã«ãã³ãã§ããããã«ãªããŸãã ã³ãŒããžã§ãã¬ãŒã¿ãŒã«ã€ããŠå¿é ããã®ã¯ãããããŸãããã 圌ãã¯è¯ãã ãããã䜿çšãããšãçç£æ§ãããã«åäžããŸãã æåããããããã»ããã¢ããããã®ã«å°ãæéãè²»ããã ãã§æžã¿ãŸããããããã°ãäœå¹Žã«ããããçç£æ§ã®åäžãåŸ ã£ãŠãããããããããžã§ã¯ãã®æŽå²ãäœãäžããããšã«ãªããŸãã
ãŸã æè¬ããªãã§ãã ãããåŸã§ã
æ確å
æ確ã«ããŠãããŸã: ãã®èšäºã¯ãããŒã¿ããŒã¹ ã¢ãã«ã«åãããŠã·ã¹ãã å šäœ (ã€ãŸãããã¡ã€ã³ãããžãã¹ ããžãã¯ãªã©) ãå€æŽããå¿ èŠããããšäž»åŒµãããã®ã§ã¯ãããŸããã ãã®èšäºã§ç§ãèšãããã®ã¯ãããŒã¿ããŒã¹ãšå¯Ÿè©±ããã¯ã©ã€ã¢ã³ã ã³ãŒãã¯ãããŒã¿ããŒã¹ ã¢ãã«ã«åºã¥ããŠåäœããå¿ èŠããããããããèªäœãããŒã¿ããŒã¹ ã¢ãã«ãããã¡ãŒã¹ãã¯ã©ã¹ãã®ç¶æ ã§åçŸããªãããã«ããå¿ èŠããããšããããšã§ãã ãã®ããžãã¯ã¯éåžžãã¯ã©ã€ã¢ã³ãã®ããŒã¿ ã¢ã¯ã»ã¹å±€ã«ãããŸãã
ããã€ãã®å Žæã§ãŸã ä¿åãããŠãã XNUMX ã¬ãã«ã®ã¢ãŒããã¯ãã£ã§ã¯ããã®ãããªã·ã¹ãã ã¢ãã«ãå¯äžå¯èœãªãã®ã§ããå¯èœæ§ããããŸãã ãã ããã»ãšãã©ã®ã·ã¹ãã ã§ã¯ãããŒã¿ ã¢ã¯ã»ã¹å±€ã¯ããŒã¿ããŒã¹ ã¢ãã«ãã«ãã»ã«åããããµãã·ã¹ãã ãã§ããããã«ç§ã«ã¯æããŸãã
äŸå€
ãã¹ãŠã®ã«ãŒã«ã«ã¯äŸå€ããããããŒã¿ããŒã¹åªå ã§ãœãŒã¹ã³ãŒãçæã®ã¢ãããŒããäžé©åãªå Žåãããããšã¯ãã§ã«è¿°ã¹ãŸããã 以äžã«ãã®ãããªäŸå€ãããã€ã瀺ããŸã (ããããä»ã«ãããã§ããã)ã
- ã¹ããŒããäžæã§ãããæ€åºããå¿ èŠãããå Žåã ããšãã°ãããªãã¯ããŠãŒã¶ãŒãä»»æã®å³ãããã²ãŒãã§ããããã«ããããŒã«ã®ãããã€ããŒã§ãããšããŸãã ããŒãã ããã§ã¯ã³ãŒãçæã¯è¡ãããŸããã ããããããã§ãããŒã¿ããŒã¹ãæåªå ã§ãã
- åé¡ã解決ããããã«åè·¯ããªã³ã¶ãã©ã€ã§çæããå¿
èŠãããå Žåã ãã®äŸã¯ããã¿ãŒã³ã®å°ã空æ³çãªããŒãžã§ã³ã®ããã«èŠããŸãã
ãšã³ãã£ãã£ã®å±æ§å€ ã€ãŸããæ確ã«å®çŸ©ãããã¹ããŒã ãå®éã«ã¯ãããŸããã ãã®å ŽåãRDBMS ãèªåã«é©ããŠãããã©ãããã確信ãæãŠãªãããšããããããŸãã
äŸå€ã¯æ¬è³ªçã«äŸå€çãªãã®ã§ãã RDBMS ã®äœ¿çšã«é¢ããã»ãšãã©ã®å Žåãã¹ããŒãã¯äºåã«ããã£ãŠãããã¹ããŒã㯠RDBMS å
ã«ååšãããçå®ãã®å¯äžã®æ
å ±æºã§ããããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã¯ã¹ããŒããã掟çããã³ããŒãååŸããå¿
èŠããããŸãã çæ³çã«ã¯ãã³ãŒããžã§ãã¬ãŒã¿ãŒã䜿çšããå¿
èŠããããŸãã
åºæïŒ habr.com