рдлреНрд░рдВрдЯрдПрдВрдб рдкрд░ рддреАрд╕рд░реЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ, рдЬрд╣рд╛рдВ рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЖрд░рдкреАрдЬреА рдПрдбрдорд┐рди рдкреИрдирд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛? рдХрд┐рд╕реА рдХреЛ рдпрд╛рдж рд╣реЛ рддреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рддреМрд░ рдкрд░ рдПрдХ рдореИрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдРрд╕реЗ рднрдВрдбрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:

  1. рднрдВрдбрд╛рд░ рд╕реЗ рдХрд╛рдВрдЯрд╛
  2. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
  3. Pom.xml рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЬреЛрдбрд╝реЗрдВ:
    • mysql: mysql-рдХрдиреЗрдХреНрдЯрд░-рдЬрд╛рд╡рд╛: 8.0.30
    • org.hibernate: hibernate-core-jakarta: 5.6.11.Final
  4. рдПрдХ рдореЗрд╡реЗрди рдмрд┐рд▓реНрдб рдмрдирд╛рдПрдВ (рдПрдорд╡реАрдПрди рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯреЙрд▓)ред рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг 1.8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
  5. рдЖрдЗрдбрд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рдордж рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡реНрдпрд╛рдЦреНрдпрд╛рди https://codegym.cc/quests/lectures/cgu.module3.lecture02 (рдЖрдЗрдЯрдо 4) рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд┐рдпрд╛ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
  6. рд╡рд░реНрдХрдмреЗрдВрдЪ рдореЗрдВ рдЖрд░рдкреАрдЬреА рд╕реНрдХреАрдорд╛ рдирд┐рд░реНрдорд╛рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ:
    CREATE SCHEMA `rpg` ;
    
  7. рд╡реИрдХрд▓реНрдкрд┐рдХ ред рдпрджрд┐ рдЖрдк рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╡рд░реНрдЧ рдореЗрдВ com.game.service.PlayerServiceрдПрдиреЛрдЯреЗрд╢рди рдорд╛рди рдХреЛ "db" рд╕реЗ "рдореЗрдореЛрд░реА"@Qualifier рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдкреНрд░рд┐рдВрдЧ . рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдПрдиреЛрдЯреЗрд╢рди рдорд╛рди рдХреЛ рд╡рд╛рдкрд╕ "db" рдореЗрдВ рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВ редIPlayerRepositoryPlayerRepositoryMemory@Qualifier
  8. рдПрдВрдЯрд┐рдЯреА рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдПрдиреЛрдЯреЗрд╢рди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ com.game.entity.Playerред рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо "рдЦрд┐рд▓рд╛рдбрд╝реА", рд╕реНрдХреАрдорд╛ "рдЖрд░рдкреАрдЬреА" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдирд╛рдореНрд╕ рдХреЗ рд▓рд┐рдП, @Enumerated(EnumType.ORDINAL)рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ @Columnред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдирд╛рдо рдлрд╝реАрд▓реНрдб рдХреА рд▓рдВрдмрд╛рдИ 12 рд╡рд░реНрдгреЛрдВ рддрдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╢реАрд░реНрд╖рдХ рдлрд╝реАрд▓реНрдб - 30 рд╡рд░реНрдгреЛрдВ рддрдХред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░ рд░рд┐рдХреНрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
  9. рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдлрд╛рдЗрдирд▓ рдлреАрд▓реНрдб PlayerRepositoryDBрдЬреЛрдбрд╝реЗрдВ , рдЗрд╕ рдлреАрд▓реНрдб рдХреЛ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВред рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрд░реЗрдВ (рд╣рдо MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд╕реНрдХрд░рдг 8 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ)ред рджрд┐рд▓рдЪрд╕реНрдк рд╕реЗ - рдЬреЛрдбрд╝реЗрдВ SessionFactory sessionFactory
    properties.put(Environment.HBM2DDL_AUTO, "update");
    
    рдпрд╣ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ (рдпрд╛ рдПрдХ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред
  10. рд╕рднреА рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рдПрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдпрд╣ рдХрд░реЗрдВ:
    • getAllрдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВNativeQuery
    • getAllCountрдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВNamedQuery
    • рд╡рд┐рдзрд┐ рдореЗрдВ beforeStop, y sessionFactoryрд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ closeред рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рд╣реЛрдиреЗ рд╕реЗ @PreDestroy, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╡реИрдз рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
    • рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рд▓реЗрдХрд┐рди рд▓реЗрди-рджреЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ рдФрд░ рдЙрди рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИ рдЬреЛ рдХрд┐рд╕реА рддрд░рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред
  11. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд┐рдпрд╛, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЖрд╡реЗрджрди рдорд┐рд▓реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ init.sql рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ) рдЪрд▓рд╛рдПрдВ рддрд╛рдХрд┐ рд╡реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ F5 рджрдмрд╛рдПрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред
  12. рдпрд╣ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХрд┐рди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рдХреНрд╡реЗрд░реА рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, p6spy:p6spy:3.9.1 рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ pom.xml рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ ред рд╕рдВрд╕рд╛рдзрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ spy.properties , рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:
    driverlist=com.mysql.cj.jdbc.Driver
    dateformat=yyyy-MM-dd hh:mm:ss a
    appender=com.p6spy.engine.spy.appender.StdoutLogger
    logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
    
    рдФрд░ PlayerRepositoryDB рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ, рджреЛ рд╡рд┐рдХрд▓реНрдк рдмрджрд▓реЗрдВ:
    properties.put(Environment.DRIVER, "com.p6spy.engine.spy.P6SpyDriver");
    properties.put(Environment.URL, "jdbc:p6spy:mysql://localhost:3306/rpg");
    
    рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЖрдкрдХреЛ 2 рд▓рд╛рдЗрдиреЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред рдкрд╣рд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдХрдерди рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрд╡реЗрд░реА рд╣реИред

рдмрд╕ рдЗрддрдирд╛ рд╣реА, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рддреИрдпрд╛рд░ рд╣реИ, рдмрдзрд╛рдИ рд╣реЛ!

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реЗ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдкрд╛рдВрдЪрд╡реЗрдВ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред


рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред