SORMред рд╕реНрдХрд╛рд▓рд╛ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдУрдЖрд░рдПрдо рдврд╛рдВрдЪрд╛

рдЬрд┐рд╕ рдХрд┐рд╕реА рдХреЛ рднреА рд╕реНрдХрд╛рд▓рд╛ рдХреЗ рд▓рд┐рдП рдУрдЖрд░рдПрдо рдкрд╕рдВрдж рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рд╛ рд╣реИ, рдЙрд╕рдиреЗ рд╢рд╛рдпрдж рд╕реНрд▓рд┐рдХ (рд╕реНрдХрд╛рд▓рд╛ рдХреНрд╡реЗрд░реА), рд╕реНрдХреНрд╡реЗрд░рд┐рд▓, рд╕рд░реНрдХреБрдореНрдлреНрд▓реЗрдХреНрд╕, рдЗрддреНрдпрд╛рджрд┐ рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдердиреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реЛрдиреЗ рдХреА рдХреЛрдИ рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ: рд╡реЗ рд╕рдВрдмрдВрдзрдкрд░рдХ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдЕрдореВрд░реНрдд рдирд╣реАрдВ рд╣реИрдВред , рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЛрдВ рд╕реЗ рдореЙрдбрд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдПрдкреАрдЖрдИ рдЕрдХреНрд╕рд░ рднреНрд░рдорд┐рдд рдФрд░ рдлреИрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░, рдЖрдЦрд┐рд░рдХрд╛рд░, рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рдХрд┐рддрдирд╛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рд╕рдВрджрд┐рдЧреНрдз рд╣реИред

рддреЛ рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ
  1. рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░ рддрдХ рдЕрдореВрд░реНрддрддрд╛ рдмрдврд╝рд╛рдПрдЧрд╛, рдЗрд╕реЗ рдорд╛рдирдХ рд╕реНрдХрд╛рд▓рд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛: рдЖрджрд┐рдо, рдЯреБрдкрд▓реНрд╕, рд╡рд┐рдХрд▓реНрдк, рд╕рдВрдЧреНрд░рд╣, рдЖрджрд┐, рд╕рд╛рде рд╣реА рдорд╛рдирдХ рдХреЗрд╕ рдХреНрд▓рд╛рд╕реЗрд╕ рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдерд╛рдПрдВ рд╣реИрдВред
  2. рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рдХрд░рдирд╛ "рд╕реНрд╡рдЪреНрдЫ" рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдкреАрдЖрдИ рд╕реЗ рд╕рдВрдмрдВрдзрдкрд░рдХ рдкрдХреНрд╖ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдкреВрд░реНрдг рдмрд╣рд┐рд╖реНрдХрд╛рд░: рдХреЛрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рдкрдВрдХреНрддрд┐рдпреЛрдВ рдпрд╛ рд╕рдВрдмрдВрдзрдкрд░рдХ рд╕рдВрдмрдВрдзреЛрдВ,
  3. рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдКрдВрдЪрд╛ рдХрд░реЗрдЧрд╛: рдХреЗрд╡рд▓ рдЧреИрд░-рдкрд░рд╕реНрдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рдиреНрдпреВрдирддрдо рд░рд╛рдЬреНрдп,
  4. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд╣ рд╕рдм рдХреБрдЫ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╡рд╣ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рдиреНрдпреВрдирддрдордХрд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдп рд╕рднреА рдХрд╛рдлреА рдЕрд╕рдВрдЧрдд рдереЗ, рд▓реЗрдХрд┐рди рд╡реЗ рд╣рд▓ рдХрд┐рдП рдЧрдП рдереЗред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рд╕реНрдерд┐рд░рддрд╛, рд╕рд╛рджрдЧреА рдФрд░ рдврд╛рдВрдЪреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреАрд╡реНрд░рддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ - рдФрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рдХрдордЬреЛрд░ рдЕрд╡рд╕рд░ рдирд╣реАрдВ рд╣реИред рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдХрд┐рдпрд╛ рдерд╛ред рдЕрдЧрд▓рд╛ рдХреЛрдб рд╣реИред

//  . //  ,      .   // -,         - //  ,   view. case class Artist ( name : String, genres : Set[Genre] ) case class Genre ( name : String ) //   .   SORM   : import sorm._ object Db extends Instance ( entities = Set() + Entity[Artist]() + Entity[Genre](), url = "jdbc:h2:mem:test" ) //     : val metal = Db.save( Genre("Metal") ) val rock = Db.save( Genre("Rock") ) Db.save( Artist("Metallica", Set() + metal + rock) ) Db.save( Artist("Dire Straits", Set() + rock) ) //  -: // Option[Artist]: val metallica = Db.query[Artist].whereEqual("name", "Metallica").fetchOne() // Stream[Artist]: val rockArtists = Db.query[Artist].whereEqual("genres.item.name", "Rock").fetch() 

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдХрд┐ рд╕рднреА рд▓реЛрдЧ рд╣реИрдВ! рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рд╕реНрдерд╛рдкрдирд╛ рдЬрд╛рдирдХрд╛рд░реА, рдкреНрд░рд▓реЗрдЦрди, рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдФрд░ рд╕реНрд▓рд┐рдХ (рд╕реНрдХрд╛рд▓рд╛ рдХреНрд╡реЗрд░реА) рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ SORM рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред

рд╕реНрдкреЙрдпрд▓рд░: рдореИрдХреНрд░реЛрдВ SORM рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЖ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд░рд▓реАрдХрд░рдг рдФрд░ рднреА рдЖрдЧреЗ рд╣реИред

Source: https://habr.com/ru/post/In159867/


All Articles