CodeGym/рдЬрд╛рд╡рд╛ рдХреЛрд░реНрд╕/All lectures for MR purposes/рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХрд▓реНрдк: рд╣рд╛рдпрдмрд░рдиреЗрдЯ #1

рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХрд▓реНрдк: рд╣рд╛рдпрдмрд░рдиреЗрдЯ #1

рдЙрдкрд▓рдмреНрдз

рдлреНрд░рдВрдЯрдПрдВрдбрд╡рд░реАрд▓ рддрд┐рд╕рд▒реНрдпрд╛ рдореЙрдбреНрдпреВрд▓рдордзреАрд▓ рдкреНрд░рдХрд▓реНрдк рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛, рдЬреЗрдереЗ рд╕рд░реНрд╡реНрд╣рд░ API рд╕рд╛рдареА рдЖрд░рдкреАрдЬреА рдкреНрд░рд╢рд╛рд╕рдХ рдкреЕрдиреЗрд▓ рд▓рд╛рдЧреВ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ? рдЬрд░ рдХреЛрдгрд╛рд▓рд╛ рдЖрдард╡рдд рдЕрд╕реЗрд▓ рддрд░ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдПрдХ рдирдХрд╛рд╢рд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓рд╛ рд╣реЛрддрд╛. рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХрдЪ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рдирд╛рдд, рдЕрд╢рд╛ рд╕реНрдЯреЛрд░реЗрдЬрдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЬрд╛рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рд╣рд╛рдпрдмрд░рдиреЗрдЯ рд╡рд╛рдкрд░реВрди рдкрд░реНрдпрд╛рдпреА рд░рд┐рдкреЙрдЭрд┐рдЯрд░реА рд▓реЗрдпрд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд▓рд┐рд╣рд┐рдгреЗ рд╣реЗ рдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдзреНрдпреЗрдп рдЕрд╕реЗрд▓.

рдпрд╛рд╕рд╛рдареА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

  1. рдПрдХ рднрд╛рдВрдбрд╛рд░ рдкрд╛рд╕реВрди рдХрд╛рдЯрд╛
  2. рдЖрдкрд▓реНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рдЖрд╡реГрддреНрддреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛.
  3. pom.xml рдордзреНрдпреЗ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдЬреЛрдбрд╛:
    • mysql:mysql-connector-java:8.0.30
    • org.hibernate: hibernate-core-jakarta: 5.6.11.Final
  4. рдореЕрд╡реЗрди рдмрд┐рд▓реНрдб рдмрдирд╡рд╛ (mvn рдХреНрд▓реАрди рдЗрдВрд╕реНрдЯреЙрд▓). рдмрджрд▓рд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА Java рдЖрд╡реГрддреНрддреА 1.8 рд╡рд╛рдкрд░рддреЛ.
  5. Idea рджреНрд╡рд╛рд░реЗ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╛. рдпрд╛ рдЖрдпрдЯрдордЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╡реНрдпрд╛рдЦреНрдпрд╛рди 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. рдЯреЗрдмрд▓рд▓рд╛ "рдкреНрд▓реЗрдЕрд░", рд╕реНрдХреАрдорд╛ "рдЖрд░рдкреАрдЬреА" рдЕрд╕реЗ рдирд╛рд╡ рджрд┐рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. enams рд╕рд╛рдареА, @Enumerated(EnumType.ORDINAL)рднрд╛рд╖реНрдп рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд рд╡рд╛рдкрд░рд╛ @Column. рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЛ рдХреА рдирд╛рд╡ рдлреАрд▓реНрдбрдЪреА рд▓рд╛рдВрдмреА 12 рд╡рд░реНрдгрд╛рдВрдкрд░реНрдпрдВрдд рдЕрд╕рд╛рд╡реА, рд╢реАрд░реНрд╖рдХ рдлреАрд▓реНрдб - 30 рд╡рд░реНрдгрд╛рдВрдкрд░реНрдпрдВрдд. рдкреВрд░реНрдгрдкрдгреЗ рд╕рд░реНрд╡ рдлреАрд▓реНрдб рд╢реВрдиреНрдп рдЕрд╕реВ рдирдпреЗрдд.
  9. рдХреНрд▓рд╛рд╕рдордзреНрдпреЗ рдЦрд╛рдЬрдЧреА рдЕрдВрддрд┐рдо рдлреАрд▓реНрдб PlayerRepositoryDBрдЬреЛрдбрд╛ , рдХреНрд▓рд╛рд╕ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░рдордзреНрдпреЗ рд╣реЗ рдлреАрд▓реНрдб рд╕реБрд░реВ рдХрд░рд╛. рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрд╛рдВрдкреНрд░рдорд╛рдгреЗ рдЧреБрдгрдзрд░реНрдо рд╡рд╛рдкрд░рд╛ (рдЖрдореНрд╣реА MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрд╡реГрддреНрддреА 8 рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░реВ). рдордиреЛрд░рдВрдЬрдХ рдкрд╛рд╕реВрди - рдЬреЛрдбрд╛ SessionFactory sessionFactory
    properties.put(Environment.HBM2DDL_AUTO, "update");
    
    рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЯреЗрдмрд▓ рдореЕрдиреНрдпреБрдЕрд▓реА рддрдпрд╛рд░ рди рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдИрд▓ (рдХрд┐рдВрд╡рд╛ sql рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрджреНрд╡рд╛рд░реЗ).
  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 рдУрд│реА рджрд┐рд╕рддреАрд▓. рдкрд╣рд┐рд▓реЗ рд╡рд┐рдзрд╛рди рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ, рджреБрд╕рд░реЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╣ рдХреНрд╡реЗрд░реА рдЖрд╣реЗ.

рд╣реЗ рд╕рд░реНрд╡ рдЖрд╣реЗ, рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдЖрд╣реЗ, рдЕрднрд┐рдирдВрджрди!

рдХрд┐рдВрдмрд╣реБрдирд╛, рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдлреНрд░реЙрдо рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рддрд╛рдирд╛ рдПрдХ рд╡реЗрдЧрд│рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ, рдЬреНрдпрд╛рдЪрд╛ рдЖрдкрдг рдкрд╛рдЪрд╡реНрдпрд╛ рдореЙрдбреНрдпреВрд▓рдордзреНрдпреЗ рд╕рдорд╛рд╡реЗрд╢ рдХрд░реВ.


рдкреНрд░рдХрд▓реНрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг.
рдЯрд┐рдкреНрдкрдгреНрдпрд╛
  • рд▓реЛрдХрдкреНрд░рд┐рдп
  • рдирд╡реАрди
  • рдЬреБрдиреЗ
рдЯрд┐рдкреНрдкрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рд╕рд╛рдИрди рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
рдпрд╛ рдкрд╛рдирд╛рд╡рд░ рдЕрдЬреВрди рдХреЛрдгрддреНрдпрд╛рд╣реА рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдирд╛рд╣реАрдд