αž€αžΆαžšαž–αž·αžαžŠαŸ†αž”αžΌαž„ αž¬αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαžšαž…αž“αžΆαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž§αž”αž€αžšαžŽαŸαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™

ហេហេ!

αž™αžΎαž„αž”αž“αŸ’αžαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘ αž€αŸ„αŸ‡αž‡αŸ’αžœαžΆ ΠΈ αž“αž·αž‘αžΆαžƒαžšαžŠαžΌαžœαžšαž½αž˜αž‘αžΆαŸ†αž„αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αžαŸ’αž„αŸƒαž“αŸαŸ‡αž™αžΎαž„αžŸαžΌαž˜αž’αž‰αŸ’αž‡αžΎαž‰αž’αŸ’αž“αž€αž±αŸ’αž™αž’αžΆαž“αž’αŸ†αž–αžΈαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž“αŸ…αž–αŸαž›αžšαž…αž“αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αŸ†αŸ— αžœαžΆαž‡αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž˜αž·αž“αž˜αŸ‚αž“αž€αžΌαžŠ Java αž‘αŸ αžŠαŸ‚αž›αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ αžšαž”αŸ€αž”αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎ αž“αž·αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž˜αžΆαž“αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž…αŸ†αž–αŸ„αŸ‡αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸαŸ‡αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž™αžΊαžαž‡αžΆαž„αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž–αž“αŸ’αž™αž›αŸ‹αž–αžΈαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž‡αžΏαžαžΆ αž€αŸ’αž“αž»αž„αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‚αŸ’αžšαž”αŸ‹αž€αžšαžŽαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž‚αŸ†αžšαžΌαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž½αž™αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„ "αž–αžΈαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™" αž‡αžΆαž‡αžΆαž„ "αž–αžΈαžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹ Java" (αž¬αž—αžΆαžŸαžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαŸ” αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž‡αžΆαž˜αž½αž™)αŸ” αžαžΆαž˜αžšαž™αŸˆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΈαž–αžΈαžš αž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž€αŸ†αžŽαžαŸ‹αžαŸ’αž›αž½αž“αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž›αžΌαžœαžŠαŸαžœαŸ‚αž„αž†αŸ’αž„αžΆαž™αž“αŸƒαž€αžΆαžšαžˆαžΊαž…αžΆαž”αŸ‹ αž“αž·αž„αž€αžΆαžšαžšαž„αž‘αž»αž€αŸ’αž αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžšαžΈαž€αž…αž˜αŸ’αžšαžΎαž“αŸ”

αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ αžŸαŸ†αžŽαž½αžšαž˜αž½αž™αŸ”αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž“αŸ…αž›αžΎ Stack Overflow αŸ”

αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž›αžΎ reddit αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ /r/java ΠΈ /r/αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ.

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ

αžαŸ’αž‰αž»αŸ†αž–αž·αžαž‡αžΆαž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αžŽαžΆαžŸαŸ‹αžŠαŸ‚αž›αžαžΆαž˜αžΆαž“αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž½αž™αž…αŸ†αž“αž½αž“αžαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž‚αžΆαž›αŸ‹ 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)) {
    // ...
}

αž€αžΌαžŠαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŠαŸƒαž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αžŸαž“αŸ’αž“αž·αž”αžΆαž αž¬αžŠαŸ„αž™αžŠαŸƒαž“αŸ…αž―αžŸαž“αŸ’αž“αž·αž”αžΆαžαž“αžΈαž˜αž½αž™αŸ—αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰αž”αŸ‚αž”αž“αŸαŸ‡αž’αžΆαž…αž€αžΎαžαž‘αžΎαž„αž—αŸ’αž›αžΆαž˜αŸ—αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αŸ” αž€αžΆαžšαž’αŸ’αžœαžΎαž…αŸ†αžŽαžΆαž€αžŸαŸ’αžšαž»αž€αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ Flyway αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αžŠαŸƒ αž¬αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž•αž„αžŠαŸ‚αžšαŸ”.

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαž”αŸ’αžšαž—αž–

αž˜αžΆαž“αž‘αžŸαŸ’αžŸαž“αžœαž·αž‡αŸ’αž‡αžΆ αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž· αž“αž·αž„αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ - αžŸαŸ€αžœαž—αŸ…αžŠαŸƒ αž“αž·αž„αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· - αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αž·αž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž›αž˜αŸ’αž’αž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‘αŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž‘αžΌαž‘αŸ…αž…αŸ†αžŽαž»αž…αž‘αžΆαŸ†αž„αž˜αžΌαž›αž“αŸƒαž€αžΌαžŠαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‚αžΊαžαžΆαžœαžΆαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰αž“αŸ…αž€αŸ’αž“αž»αž„ Java ថអ "αž€αžΆαžšαž–αž·αž" αžŠαŸ‚αž›αž™αžΎαž„αž‘αž‘αž½αž›αž™αž€αž˜αž·αž“αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž™αžΎαž„αž¬αž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αžœαžΆαŸ” αž€αŸ’αž“αž»αž„αž“αŸαž™αž˜αž½αž™ αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž’αŸ’αžœαžΎαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž”αž„αŸ’αž€αžΎαž bytecode αž€αžΌαžŠαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αž¬αž‘αž˜αŸ’αžšαž„αŸ‹αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž•αŸ’αžŸαŸαž„αž‘αŸ€αž - αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αžαŸ†αžŽαžΆαž„αž“αŸƒ "αžŸαŸαž…αž€αŸ’αžαžΈαž–αž·αž" αžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž—αžΆαžŸαžΆαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈαž αŸαžαž»αž•αž›αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ”

αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαž”αŸ‚αž”αž“αŸαŸ‡αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž§αž‘αžΆαž αžšαžŽαŸ, XJC αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ Java αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž―αž€αžŸαžΆαžš XSD ឬ WSDL. αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‚αžΊαžαŸ‚αž„αžαŸ‚αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ–

  • αž˜αžΆαž“αžŸαŸαž…αž€αŸ’αžαžΈαž–αž·αžαžαŸ’αž›αŸ‡ (αžαžΆαž„αž€αŸ’αž“αž»αž„ αž¬αžαžΆαž„αž€αŸ’αžšαŸ…) - αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αž‚αŸ†αžšαžΌαž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”αž›αŸ”
  • αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ†αžŽαžΆαž„αž€αŸ’αž“αž»αž„αžαŸ†αž”αž“αŸ‹αž“αŸƒαž€αžΆαžšαž–αž·αžαž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžœαžΆαž‚αžΊαžαŸ‚αž„αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž”αž„αŸ’αž€αžΎαžαžαŸ†αžŽαžΆαž„αž”αŸ‚αž”αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαž‘αŸ…αž‘αŸ€αžαŸ”

αž”αŸ’αžšαž—αŸαž‘αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αŸ†αžŽαžΆαŸ†

αž…αŸ†αžŽαžΆαŸ†αŸ– αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž˜αž½αž™αž‘αŸ€αž αž‘αŸ†αž“αžΎαž” αž“αž·αž„αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ jOOQ αž‚αžΊαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž”αŸ’αžšαž—αŸαž‘ αžŠαžΌαž…αžŠαŸ‚αž›αž–αž½αž€αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„ F#. αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž€αžΌαžŠαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„ αžαžΆαž˜αž–αž·αžαž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž…αž„αž€αŸ’αžšαž„αŸ” αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž€αžΌαžŠαž”αŸ‚αž”αž“αŸαŸ‡αž˜αž·αž“αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž”αŸ’αžšαž—αž–αž‘αŸαŸ” Java αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αž·αž“αž†αžΎαžαž†αžΆαž™αž€αŸαžŠαŸ„αž™ αž§αž”αž€αžšαžŽαŸ - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹ αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ Lombok.

αž€αŸ’αž“αž»αž„αž“αŸαž™αž˜αž½αž™ αžšαžΏαž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαž€αžΎαžαž‘αžΎαž„αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αžŠαžΌαž…αž€αžšαžŽαžΈαž‘αžΈαž˜αž½αž™ αž›αžΎαž€αž›αŸ‚αž„αžαŸ‚αŸ–

  • αž’αŸ’αž“αž€β€‹αž˜αž·αž“β€‹αžƒαžΎαž‰β€‹αž€αžΌαžŠβ€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž‘αŸ (αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αžŸαŸ’αžαžΆαž“αž—αžΆαž–β€‹αž“αŸαŸ‡β€‹αž αžΆαž€αŸ‹β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž˜αž·αž“β€‹αžŸαžΌαžœβ€‹αž…αŸ’αžšαžŽαŸ‚αž“β€‹αž…αŸ†αž–αŸ„αŸ‡β€‹αž’αŸ’αž“αž€β€‹αžŽαžΆβ€‹αž˜αŸ’αž“αžΆαž€αŸ‹?)
  • αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž“αžΆαžαžΆαž”αŸ’αžšαž—αŸαž‘αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™ αž“αŸ„αŸ‡αž‚αžΊ "αž–αž·αž" αžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΆαž“αž‡αžΆαž“αž·αž…αŸ’αž…αŸ” αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž„αžΆαž™β€‹αžŸαŸ’αžšαž½αž›β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžšαžŽαžΈ Lombok αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž“αŸαž™β€‹αžαžΆ "αžŸαŸαž…αž€αŸ’αžαžΈβ€‹αž–αž·αž"αŸ” αžœαžΆαž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž”αž“αŸ’αžαž·αž…αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‚αŸ†αžšαžΌαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŠαŸ‚αž›αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž”αž“αŸ’αžαž•αŸ’αž‘αžΆαž›αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž‡αžΆαž“αž·αž…αŸ’αž…αŸ”

αžαžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž’αŸ’αžœαžΈ?

αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαžŸαŸ†αžŽαž½αžšαžŠαŸαž›αŸ†αž”αžΆαž€αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž›αŸ’αž’αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ - αžŠαŸ„αž™αžŠαŸƒ αž¬αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž™αžΎαž„αž€αŸαžαŸ’αžšαžΌαžœαž›αžΎαž€αž‘αžΎαž„αž•αž„αžŠαŸ‚αžšαžαžΆ αž˜αžΆαž“αž˜αž“αž»αžŸαŸ’αžŸαžŠαŸ‚αž›αž‡αžΏαžαžΆαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡αŸ” αž™αž»αžαŸ’αžαž·αž€αž˜αŸ’αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αžŸαŸ’αžŸαž“αŸˆαž“αŸαŸ‡ αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž‰αžΉαž€αž‰αžΆαž”αŸ‹αž”αŸ†αž•αž»αž αž‚αžΊαžαžΆαž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡αžœαžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžšαž”αŸ’αžšαŸαž„αŸ” αž”αžΆαž‘ αžœαžΆαž–αž·αžαž‡αžΆαž–αž·αž”αžΆαž€αžŽαžΆαžŸαŸ‹αŸ” αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž›αžΎαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αž“αŸ’αžαŸ‚αž˜αž€αžΎαžαž‘αžΎαž„αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‘αžΎαž”αžαŸ‚αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž•αž›αž·αžαž•αž›αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ (αž˜αž·αž“αžαžΆαžœαžΆαž‡αžΆ jOOQ ឬ JAXB ឬ Hibernate αž‡αžΆαžŠαžΎαž˜) αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž”αžšαž·αž™αžΆαž€αžΆαžŸαž•αž›αž·αžαž€αž˜αŸ’αž˜αžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αŸ‹αž…αŸ†αžŽαžΆαž™αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž“ API αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž‘αžΆαž‰αž™αž€αžαž˜αŸ’αž›αŸƒαž–αžΈαžœαžΆαž”αžΆαž“ .

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž›αžΎαž„αž‚αžΊαžαŸ’αž–αžŸαŸ‹αž–αŸαž€ αž“αŸ„αŸ‡ API αž”αžΆαž“αž’αŸ’αžœαžΎαž€αž·αž…αŸ’αž…αž€αžΆαžšαž˜αž·αž“αž›αŸ’αž’αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ (αž αžΎαž™αž€αŸ’αžšαŸ„αž™αž˜αž€αžœαžΆαž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αžΆαžšαž”αŸ’αžαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸαž–αž·αž”αžΆαž€αžŠαŸ‚αžš)αŸ” αž›αž‘αŸ’αž’αž—αžΆαž–αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‚αž½αžšαžαŸ‚αž‡αžΆαž’αžΆαž‘αž·αž—αžΆαž–αžαŸ’αž–αžŸαŸ‹αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ API αž”αŸ‚αž”αž“αŸαŸ‡αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž˜αž½αž™αž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αžœαžΆαž‚αžΊαž‡αžΆαžŸαŸ€αžœαž—αŸ…αžŠαŸƒαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαžαŸ†αžŽαžΆαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž€αžΆαžšαž–αž·αžαžαžΆαž„αž€αŸ’αž“αž»αž„ αž¬αžαžΆαž„αž€αŸ’αžšαŸ…αŸ”

αž˜αž“αž»αžŸαŸ’αžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αžΉαž„αž“αž·αž™αžΆαž™αžαžΆ αž–αž½αž€αž‚αŸαž˜αž·αž“αž˜αžΆαž“αž–αŸαž›αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžšαžΏαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž‘αŸαŸ” αž–αž½αž€αž‚αŸαž€αŸ†αž–αž»αž„αž’αžŸαŸ‹αž–αŸαž›αž€αŸ†αžŽαžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Super Product αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ” αž“αŸ…αžαŸ’αž„αŸƒαžŽαžΆαž˜αž½αž™ αž™αžΎαž„αž“αžΉαž„αžšαŸ€αž”αž…αŸ†αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž…αŸ„αž‰αžŠαŸ†αž‘αžΎαž„ αž™αžΎαž„αž“αžΉαž„αž˜αžΆαž“αž–αŸαž›αŸ” αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž†αŸ’αž›αžΎαž™αž–αž½αž€αž‚αŸαŸ–

αž€αžΆαžšαž–αž·αžαžŠαŸ†αž”αžΌαž„ αž¬αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαžšαž…αž“αžΆαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž§αž”αž€αžšαžŽαŸαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™
ដើម, Alan O'Rourke, αž€αŸ’αžšαž»αž˜αž‘αžŸαŸ’αžŸαž“αž·αž€αž‡αž“

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„ 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;
}

αžαŸ’αžšαž‡αžΆαž€αŸ‹αŸ” αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰αŸ” αž‡αžΆαžαŸ’αž˜αžΈαž˜αŸ’αžαž„αž‘αŸ€αžαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αžœαžΆαž“αžΉαž„αž˜αžΆαž“αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž…αŸ†αžŽαžΆαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™

αž˜αž·αž“αž™αžΌαžšαž˜αž·αž“αž†αžΆαž”αŸ‹ αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž…αžΌαž›αž•αž›αž·αžαž€αž˜αŸ’αž˜αŸ” αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž–αŸαž›αžŠαŸ‚αž›αž˜αŸ‰αžΌαžŠαŸ‚αž›αž“αŸαŸ‡αž“αžΉαž„αžˆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αŸ–

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αž›αž·αž αžœαžΆαž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αž‘αŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ„αŸ‡αž”αž„αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αžΆαžŸαŸ‹ αž αžΎαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαžŠαŸ†αž”αžΌαž„αŸ” αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆαž˜αžšαžαž€αŸ”

αž…αžΆαž”αŸ‹αž–αžΈαž–αŸαž›αž“αŸαŸ‡αžαž‘αŸ… αž“αž·αž„αž‡αžΆαžšαŸ€αž„αžšαž αžΌαž αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαžŸαžšαžŸαŸαžš αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž•αŸ’αž‘αŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™ DDL αžŠαŸ„αž™αž”αŸ’αžšαžΎ Flyway. αžαžΎαž“αžΉαž„αž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αž’αž„αŸ’αž‚αž—αžΆαž–αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡? αž’αŸ’αž“αž€αž’αžΆαž…αžŸαž˜αŸ’αžšαž”αžœαžΆαžŠαŸ„αž™αžŠαŸƒ (αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αž„αŸ’αž€αžΎαž“αž”αž“αŸ’αž‘αž»αž€αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αŸ’αžœαŸαžŠαž„) αž¬αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΆαž”αŸ‹ Hibernate αž±αŸ’αž™αž”αž„αŸ’αž€αžΎαžαžœαžΆαž‘αžΎαž„αžœαž·αž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€ (αžαžΎαž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαžœαžΆαžαžΆαž˜αžšαž”αŸ€αž”αž“αŸαŸ‡αž‘αŸ†αž“αž„αž™αŸ‰αžΆαž„αžŽαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž–αŸαž‰αžαžΆαž˜αž€αžΆαžšαžšαŸ†αž–αžΉαž„αž‘αž»αž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€?) αžœαž·αž’αžΈαžŽαžΆαž€αŸαžŠαŸ„αž™ αž’αŸ’αž“αž€αž…αžΆαž‰αŸ‹αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž•αž›αž·αžαž€αž˜αŸ’αž˜αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αŸ†αžŽαŸ‡αž€αŸ’αžαŸ…αŸ” αž αžΎαž™β€‹αž–αž½αž€αž‚αŸβ€‹αžαŸ’αžšαžΌαžœβ€‹αžŠαžΆαž€αŸ‹β€‹αž…αžΌαž›β€‹αž€αŸ’αž“αž»αž„β€‹αž•αž›αž·αžαž€αž˜αŸ’αž˜β€‹αž™αŸ‰αžΆαž„β€‹αž›αžΏαž“αŸ” αžŠαŸ„αž™αžŸαžΆαžšαž’αŸ’αž“αž€αž˜αž·αž“αž”αžΆαž“αžšαŸ€αž”αž…αŸ† αž“αž·αž„αž˜αž·αž“αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžšαž”αŸ’αžšαŸαž„αž±αŸ’αž™αžšαž›αžΌαž“αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž…αŸ†αžŽαžΆαž€αžŸαŸ’αžšαž»αž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αž›αž·αžαž€αž˜αŸ’αž˜ αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž™αŸ‰αžΆαž„αž–αŸ’αžšαŸƒαž•αŸ’αžŸαŸƒαŸ” αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž›αŸ‚αž„αž˜αžΆαž“αž–αŸαž›αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž±αŸ’αž™αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αž αžΎαž™αž’αŸ’αž“αž€αžšαž·αŸ‡αž‚αž“αŸ‹ Hibernate αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαžαŸ‚αž„αžαŸ‚αž‡αžΆαž€αŸ†αž αž»αžŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαž‘αŸƒ αž˜αž·αž“αž˜αŸ‚αž“αž’αŸ’αž“αž€...

αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αž’αŸ’αžœαžΈαŸ—αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžαž»αžŸαž–αžΈαžŠαžΎαž˜αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΆαž€αŸ‹αž€αž„αŸ‹αž˜αžΌαž›αž›αžΎαž€αž„αŸ‹αŸ”

αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ†αž”αžΌαž„

"αžŸαŸαž…αž€αŸ’αžαžΈαž–αž·αž" αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αž·αž„ "αž’αž’αž·αž”αžαŸαž™αŸ’αž™αž—αžΆαž–" αž›αžΎαžœαžΆαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž›αž½αž“αžœαžΆαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž“αž·αž„αž‚αŸ’αž˜αžΆαž“αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸ αž αžΎαž™αž’αžαž·αžαž·αž‡αž“αž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž“αŸƒαž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž“αŸαŸ‡ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαžŸαž˜αž αŸαžαž»αž•αž›αž›αŸ’αž’αž₯αžαžαŸ’αž…αŸ„αŸ‡αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸ αž“αž·αž„αžŸαž»αž…αžšαž·αžαž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžœαžΆαž±αŸ’αž™αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ - αžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž–αŸαžαŸŒαž˜αžΆαž“αž‚αžΊ αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αŸ”
αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž…αžΆαžŸαŸ‹β€‹αž αžΎαž™β€‹αžŸαžΌαž˜αŸ’αž”αžΈβ€‹αžαŸ‚β€‹αž”αŸ’αžšαžΆαž‡αŸ’αž‰αžΆ hackneyed αŸ” αžŸαŸ„αžŸαŸ†αžαžΆαž“αŸ‹ αž“αž·αž„αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž‚αžΊαž›αŸ’αž’αŸ” αžŸαŸ„αž”αžšαž‘αŸαžŸαž‚αžΊαž›αŸ’αž’αŸ” αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αžΆαžšαžšαžΉαžαž”αž“αŸ’αžαžΉαž„αž‚αžΊαž›αŸ’αž’αŸ” αž€αžΆαžšαž’αŸ‡αž’αžΆαž„ - αž˜αž·αž“αž’αžΈαž‘αŸαŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž“αŸ„αŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžŠαŸ„αž™αž”αŸ’αžšαžΎ Oracle αž’αŸ’αž“αž€αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž…αž„αŸ‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αŸ–

  • αžαžΎαžαžΆαžšαžΆαž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŸαŸ’αžαž·αžαž“αŸ…αž›αžΎαžαž»αž’αŸ’αžœαžΈ?
  • αžαžΎαžαž˜αŸ’αž›αŸƒ PCTFRE αžšαž”αžŸαŸ‹αžœαžΆαž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈ?
  • αžαžΎαž‘αŸ†αž αŸ†αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž›αŸ†αžŠαžΆαž”αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈ (αž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹)

αž“αŸαŸ‡αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΌαž…αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžšαž„αŸ‹αž…αžΆαŸ†αžšαž αžΌαžαžŠαž›αŸ‹αž’αŸ’αž“αž€αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž‘αŸ…αž€αŸ’αž“αž»αž„αž’αžΆαžŽαžΆαž…αž€αŸ’αžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž’αŸ†αž“αŸ„αŸ‡αž‘αŸ - αž’αŸ’αž“αž€αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αž‘αž½αž›αž”αžΆαž“αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž–αžΈαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‘αŸ†αž αŸ†αž•αŸ’αž‘αž»αž€αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αž’αŸ’αž“αž€αž›αž€αŸ‹αžŠαžΌαž…αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžαžΆαž„αž›αžΎαž€αžΆαž“αŸ‹αžαŸ‚αž†αžΆαž”αŸ‹αŸ” αž‚αŸ’αž˜αžΆαž“ 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 αž¬αž”αŸ’αžšαžΎαž˜αŸ‰αžΌαžŒαž»αž›αž˜αŸαžαžΆ jOOQ αŸ”

αž–αžΈαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαžŸαŸ†αžŽαž½αžšαž”αŸ‚αž”αž“αŸαŸ‡ αžœαžΆαž˜αžΆαž“αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžαŸ†αžŽαžΆαž„αž—αžΆαž‚αžΈαž’αžαž·αžαž·αž‡αž“αžŽαžΆαž˜αž½αž™αž“αŸƒαž‚αŸ†αžšαžΌαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαŸ”

  • αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎ JDBC ឬ Spring αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαžŸαŸ†αžŽαž»αŸ†αž“αŸƒαžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžαŸαžš
  • αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎ JPA αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž’αž„αŸ’αž‚αž—αžΆαž–αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ”
  • αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎ jOOQ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž‚αŸ†αžšαžΌαž˜αŸαžαžΆ jOOQ

αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž˜αž»αžαž„αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αžŠαŸ„αž™ API αž’αžαž·αžαž·αž‡αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ (αž§αž‘αžΆαž αžšαžŽαŸ jOOQ ឬ JPA) αž‚αŸ†αžšαžΌαž˜αŸαžαžΆαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž’αžΆαž…αž–αž·αžαž‡αžΆαžŸαž˜αŸ’αž”αžΌαžšαž”αŸ‚αž” αž“αž·αž„αž–αŸαž‰αž›αŸαž‰αŸ” αž™αž€αž§αž‘αžΆαž αžšαžŽαŸαž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž…αžΌαž›αžšαž½αž˜αžŠαŸ„αž™αž”αŸ’αžšαž™αŸ„αž›, αžŽαŸ‚αž“αžΆαŸ†αž“αŸ…αž€αŸ’αž“αž»αž„ jOOQ 3.11αžŠαŸ‚αž›αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž–αŸαžαŸŒαž˜αžΆαž“αž˜αŸαžαžΆαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž’αŸ†αž–αžΈαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‚αž“αŸ’αž›αžΉαŸ‡αž”αžšαž‘αŸαžŸαžŠαŸ‚αž›αž˜αžΆαž“αžšαžœαžΆαž„αžαžΆαžšαžΆαž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŽαžΆαž˜αž½αž™αž“αžΉαž„αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž€αžΌαžŠαž’αžαž·αžαž·αž‡αž“αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αžŸαŸ’αžšαž˜αŸƒαž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαŸ–

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αŸ–
https://www.jooq.org/xsd/jooq-meta-3.10.0.xsd

  • XSD αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž›αŸ‹αž…αŸ’αž”αžΆαžŸαŸ‹
  • XSD tokenizes αž˜αžΆαžαž·αž€αžΆ XML αž”αžΆαž“αž™αŸ‰αžΆαž„αž›αŸ’αž’αž αžΎαž™αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αžŸαž»αž–αž›αž—αžΆαž–αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαž’αžαž·αžαž·αž‡αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”
  • XSD αž‚αžΊβ€‹αž˜αžΆαž“β€‹αž€αŸ†αžŽαŸ‚β€‹αž‘αž˜αŸ’αžšαž„αŸ‹β€‹αž™αŸ‰αžΆαž„β€‹αž›αŸ’αž’ αž“αž·αž„β€‹αž˜αžΆαž“β€‹αž—αžΆαž–β€‹αž†αž”β€‹αž‚αŸ’αž“αžΆβ€‹αžαž™β€‹αž€αŸ’αžšαŸ„αž™β€‹αž€αž˜αŸ’αžšαž·αžβ€‹αžαŸ’αž–αžŸαŸ‹β€‹
  • XSD αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž€αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž€αžΌαžŠ Java αžŠαŸ„αž™αž”αŸ’αžšαžΎ XJC

αž…αŸ†αžŽαž»αž…αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž‚αžΊαžŸαŸ†αžαžΆαž“αŸ‹αŸ” αž“αŸ…αž–αŸαž›αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž„αž€αŸ’αžšαŸ…αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαžΆαžš XML αž™αžΎαž„αž…αž„αŸ‹αž”αŸ’αžšαžΆαž€αžŠαžαžΆαžŸαžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŽαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎ JAXB, XJC αž“αž·αž„ XSD αŸ” αžœαžΆαž‡αžΆαž€αžΆαžšαž†αŸ’αž€αž½αžαž˜αŸ‚αž“αž‘αŸ‚αž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αž·αžαžαžΆ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžšαž…αž“αžΆ "Java first" αžŠαŸ‚αž›αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαžŸαžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαžœαžαŸ’αžαž» Java αžαžΆαž–αž½αž€αž‚αŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž’αŸ’αžœαžΎαž•αŸ‚αž“αž‘αžΈαž™αŸ‰αžΆαž„αžŸαŸŠαžΈαžŸαž„αŸ’αžœαžΆαž€αŸ‹αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„ XML αž αžΎαž™αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” XML αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž“αžΉαž„αž˜αžΆαž“αž‚αž»αžŽαž—αžΆαž–αž’αž“αŸ‹αžαŸ’αž›αžΆαŸ†αž„ αž‚αŸ’αž˜αžΆαž“αž―αž€αžŸαžΆαžš αž“αž·αž„αž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž€αž·αž…αŸ’αž…αž–αŸ’αžšαž˜αž–αŸ’αžšαŸ€αž„αž€αž˜αŸ’αžšαž·αžαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ (SLA) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αŸ‚αž”αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαžΆαž—αŸ’αž›αžΆαž˜αŸ—αŸ”

αž“αž·αž™αžΆαž™αžαžΆαž˜αžαŸ’αžšαž„αŸ‹ αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž‚αŸ’αžšαž”αŸ‹αž–αŸαž›αž‡αžΆαž˜αž½αž™ JSON APIs αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ„αŸ‡αž‡αžΆαžšαžΏαž„αž˜αž½αž™αž‘αŸ€αž αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžˆαŸ’αž›αŸ„αŸ‡αž‚αŸ’αž“αžΆαž›αžΎαž€αž€αŸ’αžšαŸ„αž™...

αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ– αž–αž½αž€αž‚αŸαž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž’αŸ’αž“αž€αžŠαžΉαž„αžαžΆαž–αž½αž€αžœαžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“ αž αžΎαž™αžαŸ’αžšαžΌαžœαžαŸ‚αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαŸ” αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ DDL αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαž—αž–αž“αŸƒαž€αžΆαžšαž–αž·αžαžαŸ‚αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αŸ”

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαžαž”αŸ’αžšαž—αž–αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„ αž’αžαž·αžαž·αž‡αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž“αŸƒαž‚αŸ†αžšαžΌαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž•αž„αžŠαŸ‚αžšαŸ” αž’αžαž·αžαž·αž‡αž“αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‡αžΆ Java αžŠαŸ„αž™αž”αŸ’αžšαžΎ jOOQ αž“αž·αž„ Hibernate ឬ JDBC (αž¬αž‘αžΆαŸ†αž„αž–αžΈαžš) αŸ” αž’αžαž·αžαž·αž‡αž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Perl (αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΌαž“αž–αžšαž±αŸ’αž™αž–αž½αž€αž‚αŸαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’) αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„ C# αŸ” αžœαžΆαž˜αž·αž“αžŸαŸ†αžαžΆαž“αŸ‹αž‘αŸαŸ” αž‚αŸ†αžšαžΌαžŸαŸ†αžαžΆαž“αŸ‹αž‚αžΊαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž˜αŸ‰αžΌαžŠαŸ‚αž›αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž”αŸ’αžšαžΎ ORMs αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž˜αžΆαž“αž‚αž»αžŽαž—αžΆαž–αž’αž“αŸ‹ αž―αž€αžŸαžΆαžšαž˜αž·αž“αžŸαžΌαžœαž›αŸ’αž’ αž“αž·αž„αž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αž»αŸ†αž’αŸ’αžœαžΎαžαž»αžŸαŸ” αž€αž»αŸ†αž”αž„αŸ’αž€αžΎαžαž€αŸ†αž αž»αžŸαžαžΆαŸ†αž„αž–αžΈαžŠαŸ†αž”αžΌαž„αŸ” αž’αŸ’αžœαžΎαž€αžΆαžšαž–αžΈαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž”αž„αŸ’αž€αžΎαžαž”αŸ†αž–αž„αŸ‹αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžŠαŸ‚αž›αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž‚αŸ†αžšαžΌαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αž”αŸ„αŸ‡αž…αŸ„αž›αžœαžΆαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαŸ” αž αžΎαž™αžˆαž”αŸ‹αž”αžΆαžšαž˜αŸ’αž—αž’αŸ†αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαŸ” αž–αž½αž€αž‚αŸβ€‹αž›αŸ’αž’αŸ” αž‡αžΆαž˜αž½αž™αž–αž½αž€αž‚αŸαž’αŸ’αž“αž€αž“αžΉαž„αž€αžΆαž“αŸ‹αžαŸ‚αž˜αžΆαž“αž•αž›αž·αžαž—αžΆαž–αŸ” αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž…αŸ†αžŽαžΆαž™αž–αŸαž›αž”αž“αŸ’αžαž·αž…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαŸ€αž”αž…αŸ†αžœαžΆαžαžΆαŸ†αž„αž–αžΈαžŠαŸ†αž”αžΌαž„αž˜αž€ αž αžΎαž™αž€αŸ’αžšαŸ„αž™αž˜αž€αž‘αŸ€αžαž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž•αž›αž·αžαž—αžΆαž–αž‡αžΆαž…αŸ’αžšαžΎαž“αž†αŸ’αž“αžΆαŸ†αž€αŸ†αž–αž»αž„αžšαž„αŸ‹αž…αžΆαŸ†αž’αŸ’αž“αž€ αžŠαŸ‚αž›αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž‡αžΆαž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž€αž»αŸ†β€‹αž’αžšαž‚αž»αžŽβ€‹αžαŸ’αž‰αž»αŸ†β€‹αž“αŸ…β€‹αž–αŸαž›β€‹αž€αŸ’αžšαŸ„αž™αŸ”

αž€αžΆαžšαž–αž“αŸ’αž™αž›αŸ‹

αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž…αŸ’αž”αžΆαžŸαŸ‹αŸ– αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž˜αž·αž“αž˜αžΆαž“αžœαž·αž’αžΈαžαžŸαŸŠαžΌαž˜αžαž·αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αžαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž˜αžΌαž› (ឧ. αžŠαŸ‚αž“ αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αŸ”αž›αŸ”) αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžŸαž˜αž“αžΉαž„αž‚αŸ†αžšαžΌαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αž“αž·αž™αžΆαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‚αžΊαžαžΆ αž€αžΌαžŠαž’αžαž·αžαž·αž‡αž“αžŠαŸ‚αž›αž˜αžΆαž“αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‚αž½αžšαžαŸ‚αž’αŸ’αžœαžΎαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž“αŸ…αž›αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž‚αŸ†αžšαžΌαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž‚αŸ†αžšαžΌαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΎαž„αžœαž·αž‰αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž– "αžαŸ’αž“αžΆαž€αŸ‹αžŠαŸ†αž”αžΌαž„" αž“αŸ„αŸ‡αž‘αŸαŸ” αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸαŸ‡αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αžŸαŸ’αžšαž‘αžΆαž”αŸ‹αž…αžΌαž›αž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž–αžΈαžšαž€αž˜αŸ’αžšαž·αž αžŠαŸ‚αž›αž“αŸ…αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžαŸ’αž›αŸ‡ αž‚αŸ†αžšαžΌαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ‚αž”αž“αŸαŸ‡αž’αžΆαž…αž‡αžΆαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αžŸαŸ’αžšαž‘αžΆαž”αŸ‹αž…αžΌαž›αž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαžαŸ’αž‰αž»αŸ†αž‡αžΆ "αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž„" αžŠαŸ‚αž›αž”αž„αŸ’αž€αž”αŸ‹αž“αžΌαžœαž‚αŸ†αžšαžΌαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„

αž˜αžΆαž“αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž…αŸ†αž–αŸ„αŸ‡αž‚αŸ’αžšαž”αŸ‹αž…αŸ’αž”αžΆαž”αŸ‹ αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αž·αž™αžΆαž™αžšαž½αž…αž˜αž€αž αžΎαž™αžαžΆ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαžŠαŸ†αž”αžΌαž„ αž“αž·αž„αž”αŸ’αžšαž—αž–αž€αžΌαžŠ αž–αŸαž›αžαŸ’αž›αŸ‡αž’αžΆαž…αž˜αž·αž“αžŸαž˜αžšαž˜αŸ’αž™αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“ (αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αžΆαž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αž)αŸ–

  • αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŠαžΉαž„αž αžΎαž™αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαžšαž€αžƒαžΎαž‰αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž‚αžΊαž‡αžΆαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž‡αž½αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαž»αž€αžšαž€αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αžŽαžΆαž˜αž½αž™αŸ” αž’αž»αž‰αŸ” αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‘αŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αžαŸ‚ αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž€αž˜αž»αž“αž‚αŸαŸ”
  • αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαŸ€αž‚αŸ’αžœαžΈαžαŸ’αžšαžΌαžœαžαŸ‚αž”αž„αŸ’αž€αžΎαžαž—αŸ’αž›αžΆαž˜αŸ—αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αž§αž‘αžΆαž αžšαžŽαŸβ€‹αž“αŸαŸ‡β€‹αž αžΆαž€αŸ‹β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž€αŸ†αžŽαŸ‚β€‹αžŠαŸβ€‹αž”αŸ’αžšαžŒαž·αžβ€‹αž”αž“αŸ’αžαž·αž…β€‹αž“αŸƒβ€‹αž‚αŸ†αžšαžΌ αžαž˜αŸ’αž›αŸƒαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž’αž„αŸ’αž‚αž—αžΆαž–αž§. αž’αŸ’αž“αž€αž–αž·αžαž‡αžΆαž˜αž·αž“αž˜αžΆαž“αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž‘αŸαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž‡αžΆαžšαžΏαž™αŸ—αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΆαž€αžŠαžαžΆ RDBMS αž“αžΉαž„αžŸαž˜αž“αžΉαž„αž’αŸ’αž“αž€αž“αŸ„αŸ‡αž‘αŸαŸ”

αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž‚αžΊαžŠαŸ„αž™αž’αž˜αŸ’αž˜αž‡αžΆαžαž·αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ RDBMS αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŠαžΉαž„αž‡αžΆαž˜αž»αž“ αžœαžΆαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„ RDBMS αž“αž·αž„αž‡αžΆαž”αŸ’αžšαž—αž–αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž“αŸƒ "αž€αžΆαžšαž–αž·αž" αž αžΎαž™αž’αžαž·αžαž·αž‡αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αž‘αž‘αž½αž›αž”αžΆαž“αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αžŠαŸ‚αž›αž”αžΆαž“αž˜αž€αž–αžΈαžœαžΆαŸ” αžαžΆαž˜αž§αžαŸ’αžŠαž˜αž‚αžαž·αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹