ืืื ืืืจ!
ืื ืื ื ืืืฉืืืื ืืืงืืจ ืืช ืื ืืฉื
ืืืืืจ ืื ืืืืืจ ืื, ืืกืืืจ ืืืืข ืื ื ืืืฉื ืฉืืืขื ืืื ืืืงืจืื, ืืืื ืื ืชืื ืื ืืืคืืืงืฆืื ืฆืจืื ืืืืืช ืืชืืื ื "ืืืกื ืื ืชืื ืื" ืืื "ืืืืืืืืช ืฉื Java" (ืื ืื ืฉืคืช ืืงืื ืฉืืชื ืขืืื ืขื). ืขื ืืื ืืืืจื ืืืืฉื ืืฉื ืืื, ืืชื ื ืื ืก ืืืจื ืืจืืื ืฉื ืืื ืืกืื ืืจืืข ืฉืืคืจืืืงื ืฉืื ืืชืืื ืืฆืืื.
ืืืืืจ ื ืืชื ืขื ืกืื
ืืืื ืื ืืขื ืืื ืื ืขื 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)) {
// ...
}
ืืงืื ื ืืฆืจ ืืืืคื ืืื ื ืืืืฅ ื-build, ืื ืืื ื ืืื build. ืืืืืื, ืืชืืืฉืืช ืืื ืขืฉืืื ืืืื ืืื ืืืืจ ืืื
ืืฆืืจืช ืงืื ืืงืืจ
ืืฉื ื ืคืืืืกืืคืืืช ืฉืื ืืช, ืืชืจืื ืืช ืืืกืจืื ืืช ืืงืฉืืจืื ืืืืฉืืช ืืื ืืืฆืืจืช ืงืื - ืืื ื ืืืืืืืื - ืืฉืจ ืื ืืืื ืืื ืืคืืจืื ืืืืืจ ืื. ืืื, ืืืืคื ืืืื, ืื ืืคืืื ืื ืฉื โโืืงืื ืฉื ืืฆืจ ืืื ืฉืืื ืืืคืฉืจ ืื ืืฉืืืจ ืื'ืืืื ืืช ื"ืืืช" ืฉืื ื ืจืืืื ืืืืื ืช ืืืืื, ืืชืื ืืืขืจืืช ืฉืื ื ืื ืืืืฆื ืื. ืืืืื ืืกืืื, ืืืืจืื ืฉืืืืฆืจืื ืงืื ืืืื, ืงืื ืืืื ื ืื ืกืื ืืืจ ืฉื ืงืื ืืงืื ืืงืืจ ืขืืฉืื ืืช ืืืชื ืืืืจ - ืื ื ืืงืืืื ืืืฆืื ืฉื ื"ืืืช" ืฉืื ื ืืฉืคื ืืืจืช, ืืื ืงืฉืจ ืืกืืืืช ืกืคืฆืืคืืืช.
ืืฉ ืืจืื ืืืืืื ืงืื ืืืื. ืืืืืื,
- ืืฉ ืืืช ืืกืืืืช (ืคื ืืืืช ืื ืืืฆืื ืืช) - ืืืฉื ืืคืจื, ืืืื ื ืชืื ืื ืืื'.
- ืื ืื ื ืฆืจืืืื ืืืฆืื ืืงืืื ืฉื ืืืืช ืืื ืืฉืคืช ืืชืื ืืช ืฉืื ื.
ืืชืจื ืืื, ืืืขื ืชืืื ืืืื ืืืืฆืจ ืืืฆืื ืืื โ ืืื ืืื ืืข ืืชืืจืืช.
ืกืคืงื ืกืืืื ืืขืืืื ืืขืจืืช
ืืขืจื: ืืืฉื ื ืืกืคืช, ืืืืจื ืืช ืืกืคืฆืืคืืช ืืืชืจ ืืืฆืืจืช ืงืื ืขืืืจ jOOQ ืืืืืช ืฉืืืืฉ ืืกืคืงื ืกืืืื,
ืืืืื ืืกืืื, ืงืืจืื ืืื ืืืชื ืืืจืื ืืื ืืืงืจื ืืจืืฉืื, ืืืื:
- ืืชื ืื ืจืืื ืืช ืืงืื ืฉื ืืฆืจ (ืืืื ืืืฆื ืืื ืื ื ืจืื ืื ืื ืืืื ืืืืฉืื?)
- ืขืืื ืืืืื ืฉื ืืชื ืืกืคืง ืกืืืื, ืืืืืจ, "ื ืืื" ืืืื ืืืืืช ืชืืื ืืืื. ืื ืงื ืืืงืจื ืฉื ืืืืืืง, ืฉืืืืื ืืช "ืืืืช". ืื ืงืฆืช ืืืชืจ ืงืฉื ืขื ืืืื ืืกื ื ืชืื ืื ืืชืืืืื ืืืืืืจ ืื ืฉืชืืื ืืืื.
ืื ืืืขืื ืืืฆืืจืช ืงืื?
ืื ืืกืฃ ืืฉืืื ืืืกืืืืช ืืื ืขืืืฃ ืืืชืืื ืืฆืืจืช ืงืื โ ืืื ืืช ืื ืืืืืืืืช, ืื ื ืืืื ืืฆืืื ืฉืืฉ ืื ืฉืื ืฉืืืืื ืื ืฉืืื ืฆืืจื ืืืฆืืจืช ืงืื ืืื. ืืืฆืืงื ืื ืงืืืช ืืืื ืืื, ืฉืื ื ืชืงืืชื ืืจืื, ืืื ืฉืงืฉื ืื ืืืงืื ืืช ืฆืื ืืจ ืืื ืืื. ืื, ืื ืืืฉ ืงืฉื. ืืฉื ื ืขืืืืืช ืชืฉืชืืช ื ืืกืคืืช. ืื ืืชื ืจืง ืืชืืืช ืขื ืืืฆืจ ืืกืืื (ืืื ืื ืื jOOQ, ืื JAXB, ืื Hibernate ืืื'), ืืืงื ืืื ืืืืืืจ ืฉืืืื ืขืืืื ืฉืืชื ืจืืฆื ืืืฉืงืืข ืืืืืื ื-API ืขืฆืื ืืื ืืืคืืง ืืื ื ืขืจื .
ืื ืืขืืืืืช ืืืจืืืืช ืืืื ืช ืืชืงื ืฉื ืืืืืื ืืืืืืช ืืื, ืื, ืืื, ื-API ืขืฉื ืขืืืื ืืจืืขื ืืฉืืืืฉืืืช ืืืืื ืืงืื (ืืืขืชืื ืืชืืจืจ ืฉืื ืืืชืืื ืืืืฉืืช ืื ืงืฉื). ืืฉืืืืฉืืืช ืฆืจืืื ืืืืืช ืืขืืืคืืช ืืืืืื ืืืืชืจ ืขืืืจ ืื API ืืื. ืืื ืื ืจืง ืืืขืื ืืื ื ืื ืืฆืืจืช ืงืื. ืืืจืช, ืืชืื ืืื ืืช ืืืืฆืื ืืืงืืื ืฉื ืืืืช ืืคื ืืืืช ืื ืืืืฆืื ืืช.
ืจืืื ืืืืื ืฉืืื ืืื ืืื ืืขืฉืืช ืืช ืื ืื. ืื ื ืืฆืืื ืืืืืืื ืขืืืจ ืืืฆืจ ืืกืืคืจ ืฉืืื. ืืชืืฉืื ืืืจ ืื ื ืกืจืง ืืช ืืกืืขื ืืืจืืื, ืืืื ืื ื ืืื. ืื ื ืืขื ื ืืื:
ืืื ืืืฆื Hibernate / JPA, ืื ืื ืื ืงื ืืืชืื ืงืื Java.
ืึผึถืึฑืึถืช. ืขืืืจ Hibernate ืืืืฉืชืืฉืื ืฉืื, ืื ืื ืืจืื ืืื ืงืืื. ืืืฆื Hibernate, ืืชื ืืืื ืคืฉืื ืืืชืื ืืื ืืฉืืืืช, ืืื ืื:
@Entity
class Book {
@Id
int id;
String title;
}
ืืืืขื ืืื ืืืื. ืขืืฉืื ืืืืง ืฉื Hibernate ืืื ืืืืฆืจ "ืคืจืืื" ืืืจืืืื ืฉื ืืื ืืืืืง ืืืฉืืช ืืื ืชืืืืจ ื-DDL ืฉื ื"ืืืืืงื" ืฉืื ืฉื SQL:
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 ืืืคืื ืืคืชื ืื ืืืคืชื ืืืืช ืืืคืจื ืืืืืช?
ืื ืจืื ืฉืื. ืื ืืชื ืืคืชื ืืช ืืคืจืืืงื ืฉืื ืืืคืก, ืื ืชืืื ื ืื ืคืฉืื ืืืจืืง ืืช ืืกื ืื ืชืื ืื ืืืฉื ืืืืฆืืจ ืืื ืืืฉ ืืจืืข ืฉืืชื ืืืกืืฃ ืืช ืืืขืจืืช ืื ืืจืฉืืช. ืื, ืืฉืืช ืืกืคืจ ืชืืืฉ ืืกืืคื ืฉื ืืืจ ืืช ืืฆืืจื:
@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
- ืื ืืืื ืืืืืื ืืจืฆืฃ ืฉืื (ืืืืืจื ืืืืื)
ืื ืื ืืืื ืื ืืฉื ื ืืืขืจืืืช ืงืื ืืช, ืืื ืืื ืฆืืจื ืืืืชืื ืขื ืืืขืืจ ืืชืืื ื"ืืื ืืืื" - ืืชื ืืืื ืืืชืืื ืืืื ืืช ืืืืคืืืืืืฆืืืช ืืืกืื ืฉืกืืคืงื ืขื ืืื ืืกืคืง, ืืื ืืื ืฉืืืืืจื ืืขืื, ืืจืื ืงืืื ืืื. ืืฃ ืืื ืื-ORMs ืฉืจืืืชื (ืืืื jOOQ) ืื ืืกืคืง ืืืฉื ืืกื ืืืื ืฉื ืืคืฉืจืืืืช DDL ืฉืืืื ืชืจืฆื ืืืฉืชืืฉ ืืื ืืืกื ืื ืชืื ืื ืฉืื. ORMs ืืฆืืขืื ืืื ืืืื ืฉืืขืืจื ืื ืืืชืื 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;
ืืื ืืชื ืืืืช ืจืืฆื ืืขืฉืืช ืืช ืืขืืืื ืืื ืคืขืืืื? ืืฉืื ืืงืจื. ืื ืื ื ืคืฉืื ืืืฆืขืื ืืช ื-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 ืืฉืคืืขืื ืื ืขื ืืกืื ืืืงื, ืื ืจืง ืขื ืืชืืืืจ. ืืื, ืื ืืืื ืืืืืช ื ืื ืืจืืืช ืืงืื ืืงืืืคืืืฆืื ืืืื ืงืื ืืืฉืคืข (ืื ืืืื ืืืืืช) ืืืืืืช ืืกื ืื ืชืื ืื ืฉืื.
ืืืืช ืืืืืื
ืื ืืฉื ื ืืืืื ืืื ืืืืืื ืืชื ืืฉืชืืฉ, ืชืืื ืืฉ ืืืื ืืื ืฉืืื ืืงืืจ ืืืืช ืืืืื ืขืืืจ ืชืช-ืืขืจืืช ืืืฉืื - ืื ืืคืืืช ืขืืื ื ืืฉืืืฃ ืืื ืืืืืื ืข ืืืืืื ืืจืืื ื ืฉืื "ืืืืช" ื ืืฆืืช ืืื ืืงืื ืืืฉืื ืืงืื ืืืช ืืืช. ืืื ืืืื ืืืืืช ืืจืื ืืืชืจ ืงื. ืื ืืชื ืจืง ืืืืืฃ ืงืืฆื XML ืขื ืืขืจืืช ืืืจืช, ืคืฉืื ืืฉืชืืฉ ื-XSD. ืชืกืชืื ืขื ืืื-ืืืื INFORMATION_SCHEMA ืฉื jOOQ ืืฆืืจืช XML:
- XSD ืืืื ืืืื
- XSD ืืกืื ืืืื ืชืืื XML ืืืืคืฉืจ ืืืืืช ืืื ืฉืคืืช ืืืงืื
- XSD ืืื ืืขื ืืจืกื ืืืื ืืชืืื ืืืื ืืืืืจ
- ื ืืชื ืืชืจืื XSD ืืงืื Java ืืืืฆืขืืช XJC
ืื ืงืืื ืืืืจืื ื ืืฉืืื. ืืขืช ืชืงืฉืืจืช ืขื ืืขืจืืช ืืืฆืื ืืช ืืืืฆืขืืช ืืืืขืืช XML, ืื ื ืจืืฆืื ืืืืืช ืืืืืื ืฉืืืืืขืืช ืฉืื ื ืชืงืคืืช. ืงื ืืืื ืืืฉืื ืืืช ืขื JAXB, XJC ื-XSD. ืื ืืืื ืืืจืืฃ ืืืืจ ืืืฉืื ืฉืืืืฉืช ืขืืฆืื ืฉื Java, ืฉืื ืื ื ืืืฆืจืื ืืช ืืืกืจืื ืฉืื ื ืืืืืืืงืื Java, ืื ืืืืืื ืืืืฉืื ืืืืืช ืืืื ืื ื-XML ืืืฉืืื ืืืชื ืืฆืจืืื ืืืขืจืืช ืืืจืช. ื-XML ืฉื ืืฆืจ ืืืจื ืื ืืืื ืืืืืืช ืืจืืื ืืืื, ืื ืืชืืขื ืืงืฉื ืืคืืชืื. ืื ืืืืชื ืืกืืื ืขื ืจืืช ืืืืืช ืืฉืืจืืช (SLA) ืขื ืืืฉืง ืืื, ืืื ืืืื ื ืืคืฉืืื.
ืืืขื ืืืืช, ืื ืืืืืง ืื ืฉืงืืจื ืื ืืืื ืขื ื-API ืฉื JSON, ืืื ืื ืืืจ ืกืืคืืจ ืืืจ, ืื ื ืืชืืืื ืืคืขื ืืืื...
ืืืืจื ืืืืข: ืื ืืืื
ืืขืืืื ืขื ืืกืื ื ืชืื ืื, ืืชื ืืืื ืฉืืืื ืืืื ืืขืฆื. ืืกืืก ืื ืชืื ืื ืืื ืืืขืืื ืฉื ืื ืชืื ืื ืฉืื ืืขืืื ืื ืื ืืช ืืกืืืื. ืื ืฉืื ืื ืฉื ืขืฉื ืืกืืืื ืืืื ืืืืืช ืืืืฉื ืืฉืืจืืช ื-DDL ืื ืฉืืงืืจ ืืืืช ืืืืื ืืชืขืืื.
ืืืฉืจ ืขืืืื ืืืงืืจ ืืชืจืืฉ, ืื ืืืงืืืืช ืืืืืื ืื ืืขืืื ืืช ืืขืืชืงืื ืฉืืื ืฉื ืืืืื. ืืืชืื ืฉืืืง ืืืืงืืืืช ืืืืชืื ื-Java ืืืืฆืขืืช jOOQ ื-Hibernate ืื JDBC (ืื ืฉื ืืื). ืืงืืืืช ืืืจืื ืขืฉืืืื ืืืืืชื ื-Perl (ืืืื ื ืืื ืืื ืืืฆืืื), ืืืจืื ื-C#. ืื ืื ืืฉื ื. ืืืืื ืืขืืงืจื ื ืืฆื ืืืกื ืื ืชืื ืื. ืืืืืื ืฉื ืืฆืจื ืขื ืืื ORM ืื ืืืจื ืืื ืืืืืืช ืืจืืื, ืืชืืขืืื ืืฆืืจื ืืจืืขื ืืงืฉืื ืืคืืชืื.
ืื ืื ืชืขืฉื ืืขืืืืช. ืื ืชืขืฉื ืืขืืืืช ืืืืชืืื. ืขืืืื ืืชืื ืืกื ื ืชืื ืื. ืื ืืืช ืฆืื ืืจ ืคืจืืกื ืฉื ืืชื ืืืฆืข ืืืืืืืืช. ืืคืฉืจ ืืืืืืื ืงืื ืืืขืชืืง ืื ืืืืช ืืช ืืืื ืืกื ืื ืชืื ืื ืฉืื ืืืืฉืืื ืืืชื ืขื ืืงืืืืช. ืืชืคืกืืง ืืืืื ืืืืืืื ืงืื. ืื ืืืืื. ืืืชื ืชืืคืื ืืืืชืจ ืคืจืืืืงืืืื. ืื ืื ืฉืืชื ืฆืจืื ืืขืฉืืช ืืื ืืืฉืงืืข ืืขื ืืื ืืืืืจืชื ืืืจ ืืืืชืืื, ืืืืื ืื ืฉื ืื ืฉื ืืืฆืืขืื ืืฉืืคืจืื ืืื ืืื ืืช ืืช ืืกืืคืืจ ืฉื ืืคืจืืืงื ืฉืื.
ืื ืชืืื ืื ืขืืืื, ืืืืืจ ืืืชืจ.
ืืืืจื
ืฉืืืื ืืจืืจ: ืืืืจ ืื ืืื ื ืชืืื ืืฉืื ืฆืืจื ืืื ืฉืฆืจืื ืืืืืืฉ ืืช ืืืขืจืืช ืืืื (ืืืืืจ, ืชืืื, ืืืืืงื ืขืกืงืืช ืืื' ืืื') ืื ืฉืชืชืืื ืืืืื ืืกื ืื ืชืื ืื ืฉืื. ืื ืฉืื ื ืืืืจ ืขืืื ืืืืืจ ืื ืืื ืฉืงืื ืืงืื ืฉืืงืืื ืืื ืืจืืงืฆืื ืขื ืืกื ื ืชืื ืื ืฆืจืื ืืคืขืื ืขื ืืกืืก ืืืื ืืกื ืื ืชืื ืื ืื ืฉืืื ืื ืืฉืืืจ ืืช ืืืื ืืกื ืื ืชืื ืื ืืกืืืืก "ืืืืงื ืจืืฉืื ื". ืืืืืงื ืืื ืืืืงืืช ืืืจื ืืื ืืฉืืืช ืืืืฉื ืื ืชืื ืื ืืืงืื ืฉืื.
ืืืจืืืืงืืืจืืช ืื-ืืคืืกืืืช, ืฉืขืืืื ื ืฉืืจืืช ืืืงืืืืช ืืกืืืืื, ืืืื ืืขืจืืช ืืื ืขืฉืื ืืืืืช ืืืืื ืืืคืฉืจื. ืขื ืืืช, ืืจืื ืืืขืจืืืช, ืฉืืืช ืืืืฉื ืื ืชืื ืื ื ืจืืืช ืื ื"ืชืช-ืืขืจืืช" ืืืงืืคืืช ืืช ืืืื ืืกื ืื ืชืื ืื.
ืืจืืืื
ืืื ืืื ืืฉ ืืืฆืืื ืื ืืืื, ืืืืจืชื ืืขืืจ ืฉืืืืฉื ืืจืืฉืื ื ืฉื ืืกื ืื ืชืื ืื ืืืฆืืจืช ืงืื ืืืงืืจ ืืืืื ืืคืขืืื ืืืืืช ืืืชื ืืืืืช. ืื ื ืืื ืืจืืืื ืืืื (ืื ืจืื ืืฉ ืืืจืื):
- ืืืฉืจ ืืกืืืื ืืื ื ืืืืขื ืืืฉ ืืคืชืื ืืืชื. ืืืืืื, ืืชื ืืกืคืง ืืื ืฉืืขืืืจ ืืืฉืชืืฉืื ืื ืืื ืืื ืืืืืจืื. ืคืื. ืืื ืืื ืืฆืืจืช ืงืื. ืืื ืืื ืืืช - ืืกื ืื ืชืื ืื ืงืืื ืื.
- ืืืฉืจ ืฆืจืื ืืืฆืืจ ืืขืื ืชืื ืืื ืืื ืืคืชืืจ ืืขืื ืืืฉืื. ื ืจืื ืฉืืืืืื ืืื ืืื ืืจืกื ืืขื ืืฆืืืฆืืช ืฉื ืืชืื ืืช
ืขืจื ืชืืื ืช ืืฉืืช , ืืืืืจ, ืืื ืื ืืืืช ืกืืื ืืืืืจืช ืืืื. ืืืงืจื ืื, ืืขืชืื ืงืจืืืืช ืืชื ืืคืืื ืื ืืืื ืืืืืช ืืืื ืืืื ืฉ-RDBMS ืืชืืื ืื.
ืืจืืืื ืื ืืืืขื ืืจืืืื. ืืจืื ืืืงืจืื ืืืืืืื ืฉืืืืฉ ื-RDBMS, ืืกืืืื ืืืืขื ืืจืืฉ, ืืื ื ืืฆืืช ืืชืื ื-RDBMS ืืืื ืืืงืืจ ืืืืื ื"ืืืช", ืืื ืืืงืืืืช ืฆืจืืืื ืืจืืืฉ ืขืืชืงืื ืื ืืืจืื ืืื ื. ืืืืคื ืืืืืืื, ืื ืฆืจืื ืืืืื ืืืืื ืงืื.
ืืงืืจ: www.habr.com