рдкреБрд╕реНрддрдХ "рд╡рд╕рдВрддред рд╕рднреА рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди ┬╗

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

рд╣рдорд╛рд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ "рдкреИрдЯрд░реНрди" рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ "рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВ"

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

DAO рдЗрдВрдЯрд░рдлреЗрд╕ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдВрддреНрд░реЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░реЛрдВ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкреИрдЯрд░реНрди рдЖрдкрдХреЛ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рддрдХрдиреАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рдЕрдВрдЬреАрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред 8.1 рдбреАрдПрдУ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрд░реЗрдЦ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреИрдЯрд░реНрди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

BusinessObject - рдПрдХ рд╡рд╕реНрддреБ рдЬреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕реНрддрд░ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ - рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯред рдЙрд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

DataAccessObject DAO рдкреИрдЯрд░реНрди рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╣реИред BusinessObject рд╕реЗ рдЫреБрдкрд╛рддрд╛ рд╣реИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рдВрдкреВрд░реНрдг рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред

рдПрдХ DataSource рднреА рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ: RDBMS, рдЕрд╕рдВрд░рдЪрд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ, рдпрд╛ XMLред

TransferObject - рднрдВрдбрд╛рд░рдг рдорд╛рдзреНрдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБред DataAccessObject рджреНрд╡рд╛рд░рд╛ BusinessObject рдкрд░ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдПрдХ DAO рдкреИрдЯрд░реНрди рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ AccountDao рдПрдХ DataAccessObject рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдФрд░ AccountDaoImpl рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ AccountDao рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:

public interface AccountDao { Integer totalAccountsByBranch(String branchName); } public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao { @Override public Integer totalAccountsByBranch(String branchName) { String sql = "SELECT count(*) FROM Account WHERE branchName = "+branchName; return this.getJdbcTemplate().queryForObject(sql, Integer.class); } } 

рдлрд╝реИрдХреНрдЯрд░реА рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдореЗрдВ DAO рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛


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

рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рдЙрд╕ рд░рдгрдиреАрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░рдЦрд╛рдирд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ (рдЪрд┐рддреНрд░ 8.2) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдбреАрдПрдУ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдЖрдк рдкрд┐рдЫрд▓реЗ рдЖрд░реЗрдЦ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ AccountDaoFactory рдПрдХ AccountDao рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдХрд╛рд░рдЦрд╛рдиреЗ рдЗрд╕ рдХрд╛рдо рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ рдШрдЯрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдбреАрдПрдУ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рд╕рднреА рдбреАрдПрдУ рдХреЗ рднрдВрдбрд╛рд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдореИрдкрд┐рдВрдЧ рдкреИрдЯрд░реНрди


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

рдЖрдЗрдП рдЕрдВрдЬреАрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред 8.3 "рдбреЗрдЯрд╛ рдореИрдкрд░" рдкреИрдЯрд░реНрди рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдПред

рдЫрд╡рд┐

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

рдкреИрдЯрд░реНрди "рдбреЛрдореЗрди рдореЙрдбрд▓"


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

рдЫрд╡рд┐

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

рд╕реНрдердЧрд┐рдд рдбрд╛рдЙрдирд▓реЛрдб рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА


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

рд╡рд╕рдВрдд рдореЗрдВ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рдзрд┐ рдкреИрдЯрд░реНрди


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

рд╡рд╕рдВрдд рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдПрдХреАрдХрд░рдг


рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд ORM рджреГрдврд╝рддрд╛ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рди рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рд░рд▓ рд╡рд╕реНрддреБ рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХреИрд╢рд┐рдВрдЧ рд╡рд┐рд▓рдВрдмрд┐рдд рд▓реЛрдбрд┐рдВрдЧ, рддрддреНрдХрд╛рд▓ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐, рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХреИрд╢рд┐рдВрдЧред

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

рдЕрдЧрд▓реЗ рдЦрдВрдб рдореЗрдВ, рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рд╡рд╕рдВрдд рдврд╛рдВрдЪреЗ рдХреЗ IoC рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреЛ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдПрдХ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реЗрд╢рдирдлреИрдХреНрдЯрд░реА рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛


рдХрд┐рд╕реА рднреА рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдФрд░ рдЕрдиреНрдп рд╕реНрдЯреЛрд░реЗрдЬ рддрдХрдиреАрдХреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣рд╛рд░реНрдб-рд╡рд╛рдпрд░реНрдб рд╕рдВрд╕рд╛рдзрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ JDBC рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдпрд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдореЗрдВ SessionFactoryред рдЗрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рджреНрд╡рд╛рд░рд╛ рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд╕рдВрджрд░реНрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдирд┐рдореНрди DAO рд╡рд░реНрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SessionFactory рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

 public class AccountDaoImpl implements AccountDao { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } // ... } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, DAO рд╡рд░реНрдЧ, AccountDaoImpl, рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд╕реЗрд╢рдирдлреИрдХреНрдЯрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрд╕рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИ, рдФрд░ рдпрд╣ IoT рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рддреНрд░рд╛рдВрдХ рд╡рд╕реНрддреБ рдПрдХ рдПрдХрд▓ рд╡рд╕реНрддреБ рд╣реИ, рдпрд╣ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ org.hibernate.Session рдХреА рдореБрдЦреНрдп рд╡рд╕реНрддреБ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред SessionFactory рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╕рддреНрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдлрд╝рдВрдХреНрд╢рдирд▓рд┐рдЯреА - рд╕реЗрд╡ (рд╕реЗрд╡), рдЕрдкрдбреЗрдЯ (рдЕрдкрдбреЗрдЯ), рдбрд┐рд▓реАрдЯ (рдбрд┐рд▓реАрдЯ) рдФрд░ рд▓реЛрдб (рд▓реЛрдб) рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╣реЛрддреА рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, AccountDaoImpl рд╡рд░реНрдЧ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрд╕ рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред

рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдирд┐рд░реНрдорд┐рдд рдореЙрдбреНрдпреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗрд╢рдирдлрд╛рдЗрдмрд░ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Org.springframework.orm.hibernate5.LocalSessionFactoryBean рдШрдЯрдХ рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреИрдХреНрдЯреНрд░реА рдмреАрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред LocalSessionFactoryBean рд╕рд╛рд░ рдлреИрдХреНрдЯреНрд░реА рдкреИрдЯрд░реНрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ; рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ SessionFactory рд╡рд╕реНрддреБ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 @Bean public LocalSessionFactoryBean sessionFactory(DataSource dataSource) { LocalSessionFactoryBean sfb = new LocalSessionFactoryBean(); sfb.setDataSource(dataSource); sfb.setPackagesToScan(new String[] { "com.packt.patterninspring.chapter8.bankapp.model" }); Properties props = new Properties(); props.setProperty("dialect", "org.hibernate.dialect.H2Dialect"); sfb.setHibernateProperties(props); return sfb; } 

рдЗрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдордиреЗ SessionFactory рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ LocalSessionFactoryBean рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдШрдЯрдХ рдХреА рд╡рд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ DataSource рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рд╕реНрдерд╛рди рдФрд░ рд╡рд┐рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рд╣рдордиреЗ рдпрд╣ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдкреИрдХреЗрдЬ рдорд╛рди рд╕реЗрдЯ рдХрд░рдХреЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП "com.packt.patterninspring.chapter8.bankapp.model" рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП LocalSessionFactoryBean рдШрдЯрдХ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╕рдВрдкрддреНрддрд┐, рдФрд░ рд╕реЗрдЯрд╣реИрдмрд░рдиреЗрдЯрдкреНрд░реЙрдкрд░реНрдЯреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдШрдЯрдХ рдХреА рдмреЛрд▓реА рдЧреБрдг рд╕реЗрдЯ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдЖрд╡реЗрджрди рдореЗрдВ рдорд╛рдорд▓рд╛ред

рдЕрдм, рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реЗрд╢рдирдлрд╛рдЗрдмрд░ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдШрдЯрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реЗрд╡ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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

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

рд╕рдореАрдХреНрд╖рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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

рд╡рд╣ рдЬрд╛рд╡рд╛, рдЬреЗ 2 рдИрдИ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдврд╛рдВрдЪреЗ, рдПрдВрдбреНрд░реЙрдЗрдб, рдпреВрдЖрдИ-рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (SCJP, рд╕рди рд╕рд░реНрдЯрд┐рдлрд╛рдЗрдб рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░) рдФрд░ рдЬрд╛рд╡рд╛ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ (рд╕рди рд╕рд░реНрдЯрд┐рдлрд╛рдЗрдб рд╡реЗрдм рдХрдВрдкреЛрдиреЗрдВрдЯ рдбреЗрд╡рд▓рдкрд░, SCWCD) тАЛтАЛрдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрд░реНрдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгрд┐рддред рд░рд╛рдЬреАрд╡ рдХреА рдЪрд╛рд░ рдЙрдЪреНрдЪ рд╢рд┐рдХреНрд╖рд╛рдПрдБ рд╣реИрдВ: рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди (рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди), рдЕрдиреБрдкреНрд░рдпреБрдХреНрдд рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди (рдХрдВрдкреНрдпреВрдЯрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ), рдЬреИрд╡рд┐рдХ рд░рд╕рд╛рдпрди рд╡рд┐рдЬреНрдЮрд╛рди рдФрд░ рд╡реНрдпрд╡рд╕рд╛рдп рдкреНрд░рд╢рд╛рд╕рди (рдПрдордмреАрдП)ред рд╡рд╣ HCL, Amdocs, Steria, TCS, Wipro, Oracle University, IBM, CSC, Genpact, Sapient Infosys рдФрд░ Capgemini рдореЗрдВ рднрд░реНрддреА рд╕рд▓рд╛рд╣рдХрд╛рд░ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВред

рд░рд╛рдЬреАрд╡ рдПрд╕рдПрдирдПрд╕ рдЗрдиреНрдлреЛрдЯреЗрдХ рдХреЗ рд╕рдВрд╕реНрдерд╛рдкрдХ рд╣реИрдВ, рдЬреЛ рдЧреНрд░реЗрдЯрд░ рдиреЛрдПрдбрд╛ рд╢рд╣рд░ рдореЗрдВ рд╕реНрдерд┐рдд рдПрдХ рдХрдВрдкрдиреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдиреЗрд╢рдирд▓ рдЗрдВрд╕реНрдЯреАрдЯреНрдпреВрдЯ рдСрдл рдлреИрд╢рди рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреА (рдирд┐рдлреНрдЯ) рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред

┬╗рдкреБрд╕реНрддрдХ рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ
┬╗ рд╕рд╛рдордЧреНрд░реА
┬╗ рдЕрдВрд╢

рдлреЗрд░реАрд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреВрдкрди рдкрд░ 20% рдХреА рдЫреВрдЯ - рд╕реНрдкреНрд░рд┐рдВрдЧ

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


All Articles