рдЬреЗрдкреАрдП 2.2 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ

рд╕рднреА рдХреЛ рд╣реИрдкреНрдкреА рд╣реЙрд▓рд┐рдбреЗ!

рдРрд╕рд╛ рдЕрдЪрд╛рдирдХ рд╣реБрдЖ рдХрд┐ рджреВрд╕рд░реЗ рд╕рдореВрд╣ "рдЬрд╛рд╡рд╛ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдбреЗрд╡рд▓рдкрд░" рдХреА рд╢реБрд░реБрдЖрдд рд╡рд░реНрд╖ рдХреЗ 256 рд╡реЗрдВ рджрд┐рди рдХреЗ рд╕рд╛рде рд╣реБрдИред рд╕рдВрдпреЛрдЧ? рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред

рдареАрдХ рд╣реИ, рд╣рдо рдкрд╛рд░рд┐рд╢реНрд░рдорд┐рдХ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ: рдЬреЗрдкреАрдП 2.2 рдиреЗ рдХреМрди рд╕реА рдирдИ рдЪреАрдЬреЗрдВ рд▓рд╛рдИрдВ - рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо, рдмреЗрд╣рддрд░ рддрд╛рд░реАрдЦ рд░реВрдкрд╛рдВрддрд░рдг, рдирдП рдПрдиреЛрдЯреЗрд╢рди - рдЙрдкрдпреЛрдЧреА рд╕реБрдзрд╛рд░ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгред

рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!

рдЬрд╛рд╡рд╛ рдкрд░реНрд╕рд┐рд╕реНрдЯреЗрдВрд╕ рдПрдкреАрдЖрдИ (рдЬреЗрдкреАрдП) рдПрдХ рдореМрд▓рд┐рдХ рдЬрд╛рд╡рд╛ рдИрдИ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдЬреЛ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рднрд▓реЗ рд╣реА рдЖрдк рдЬрд╛рд╡рд╛ рдИрдИ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЬрд╛рд╡рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП, рдЬреЗрдкреАрдП рдЖрдкрдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЬреЗрдкреАрдП 2.1 рдиреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреБрд╢рд▓ рдХрд╛рдо рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг, рдЬреЗрдкреАрдП 2.2, рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред рдирдореВрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ "рдЬрд╛рд╡рд╛ рдИрдИ 8 рдкреНрд▓реЗрдЧреНрд░рд╛рдЙрдВрдб" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдЧрд┐рдЯрд╣рдм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдирдореВрдирд╛ рдЖрд╡реЗрджрди рдЬрд╛рд╡рд╛ EE 8 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рджреГрдврд╝рддрд╛ рдХреЗ рд▓рд┐рдП JavaServer Faces (JSF), рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ JavaBeans (EJB) рдФрд░ JPA рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдкреАрдП рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



JPA 2.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

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

<dependency> <groupId>javax.persistence</groupId> <artifactId>javax.persistence-api</artifactId> <version>2.2</version> </dependency> 

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

 <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>eclipselink</artifactId> <version>2.7.0 </version> </dependency> 

рдпрджрд┐ рдЖрдк Java EE 8 рд╕рдВрдЧрдд рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреИрд╕реЗ GlassFish 5 рдпрд╛ Payara 5, рддреЛ рдЖрдкрдХреЛ POM рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП "рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛" рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рдВрдХрд▓рди" рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

рдЬрд╛рд╡рд╛ 8 рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рд╕рдорд░реНрдерди

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

  • java.time.LocalDate
  • java.time.LocalTime
  • java.time.LocalDateTime
  • java.time.OffsetTime
  • java.time.OffsetDateTime

рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкрд╣рд▓реЗ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЗрдкреАрдП 2.2 рдХреЗ рдмрд┐рдирд╛ рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдПрдкреАрдЖрдИ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред JPA 2.1 рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдбреЗрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдЬреИрд╕реЗ java.util.Date рдФрд░ java.sql.Timestamp рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рддрд╛рд░реАрдЦ рдХреЛ рдкреБрд░рд╛рдиреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдЬреЗрдкреАрдП 2.1 рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рддрд┐рдерд┐ рдФрд░ рд╕рдордп рдПрдкреАрдЖрдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдореЗрдВ рд╕рдХреНрд╖рдо рдЬреЗрдкреАрдП 2.1 рдореЗрдВ рдПрдХ рддрд╛рд░реАрдЦ рдХрдирд╡рд░реНрдЯрд░ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреА рддрд░рд╣ рдХреБрдЫ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ LocalDate рдФрд░ LocalDate рдХреЗ рдмреАрдЪ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1

 @Converter(autoApply = true) public class LocalDateTimeConverter implements AttributeConverter<LocalDate, Date> { @Override public Date convertToDatabaseColumn(LocalDate entityValue) { LocalTime time = LocalTime.now(); Instant instant = time.atDate(entityValue) .atZone(ZoneId.systemDefault()) .toInstant(); return Date.from(instant); } @Override public LocalDate convertToEntityAttribute(Date databaseValue){ Instant instant = Instant.ofEpochMilli(databaseValue.getTime()); return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalDate(); } } 

JPA 2.2 рдХреЛ рдЕрдм рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╕рдорд░реНрдерд┐рдд рддрд┐рдерд┐-рд╕рдордп рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдРрд╕реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдмрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреЗ рдмрд┐рдирд╛ рдЗрдХрд╛рдИ рд╡рд░реНрдЧ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ @Temporal рдХреЛрдб рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ @Temporal рдореИрдкрд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИред

 public class Job implements Serializable { . . . @Column(name = "WORK_DATE") private LocalDate workDate; . . . } 

рдЪреВрдВрдХрд┐ рд╕рдорд░реНрдерд┐рдд рджрд┐рдирд╛рдВрдХ-рд╕рдордп рдкреНрд░рдХрд╛рд░ рдЬреЗрдкреАрдП рдореЗрдВ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╛рд░реЛрд╣реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред JPA 2.1 @Temporal рдПрдиреЛрдЯреЗрд╢рди рдХреЛ java.util.Date рдФрд░ java.util.Calendar рд╕рднреА рдирд┐рд░рдВрддрд░ рдлрд╝реАрд▓реНрдб рдФрд░ рдЧреБрдгреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2 рдореЗрдВ рдХреЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ LocalDateTime рд╕реЗ LocalDateTime рддрдХ рд╕рдордп рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ ZonedDateTime ред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2

 @Converter public class LocalToZonedConverter implements AttributeConverter<ZonedDateTime, LocalDateTime> { @Override public LocalDateTime convertToDatabaseColumn(ZonedDateTime entityValue) { return entityValue.toLocalDateTime(); } @Override public ZonedDateTime convertToEntityAttribute(LocalDateTime databaseValue) { return ZonedDateTime.of(databaseValue, ZoneId.systemDefault()); } } 

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ ZonedDateTime рдореЗрдВ рдРрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд░реВрдкрд╛рдВрддрд░рдг toLocalDateTime() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╣реЛрддрд╛ рд╣реИред рдЙрд▓рдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг ZonedDateTimeOf() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдФрд░ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ZoneId рдХреЗ рд╕рд╛рде ZoneId рдорд╛рди рдкрд╛рд╕ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдВрдмреЗрдбреЗрдб рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕

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

рдЗрд╕ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрдирд╡рд░реНрдЯрд░ рдореЗрдВ CDI рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░реЗрдВред рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2 рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдм рдореИрдВ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╕рдордЭрд╛рддреЗ рд╣реБрдП рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░реВрдВрдЧрд╛ред

рдХрдирд╡рд░реНрдЯрд░ рд╡рд░реНрдЧ рдХреЛ javax.persistence.AttributeConverter рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ X рдФрд░ Y рдорд╛рдиреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред X рдорд╛рди рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ Y рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрддрдВрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░, рдХрдирд╡рд░реНрдЯрд░ рд╡рд░реНрдЧ рдХреЛ @Converter рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрдд рдореЗрдВ, рд╡рд░реНрдЧ рдХреЛ convertToDatabaseColumn() рдФрд░ convertToEntityAttribute() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрдм рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдирд╡рд░реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд" рдЬреЛрдбрд╝реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ @Converter(autoApply=true) ред рдХрд┐рд╕реА рдПрдХрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдирд╡рд░реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реНрддрд░ рдкрд░ @Converter рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 @Convert(converter=LocalDateConverter.java) private LocalDate workDate; 

рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рдХрдХреНрд╖рд╛ рд╕реНрддрд░ рдкрд░ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 @Convert(attributeName="workDate", converter = LocalDateConverter.class) public class Job implements Serializable { . . . 

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореИрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рдиреЗ рдкрд░ Customer рдЗрдХрд╛рдИ рдХреЗ creditLimit рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╣реЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХрдирд╡рд░реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░, рдЬреЗрдкреАрдП 2.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдореИрдВ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдирд╡рд░реНрдЯрд░ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╕реВрдЪреА 3 рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 3

 @Converter public class CreditLimitConverter implements AttributeConverter<BigDecimal, BigDecimal> { @Inject CreditLimitEncryptor encryptor; @Override public BigDecimal convertToDatabaseColumn (BigDecimal entityValue) { String encryptedFormat = encryptor.base64encode(entityValue.toString()); return BigDecimal.valueOf(Long.valueOf(encryptedFormat)); } ... } 

рдЗрд╕ рдХреЛрдб рдореЗрдВ, CreditLimitEncryptor рд╡рд░реНрдЧ рдХреЛ рдХрдирд╡рд░реНрдЯрд░ рдореЗрдВ CreditLimitEncryptor рдХрд░рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо

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

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, getResultStream() рд╡рд┐рдзрд┐ рдХреЛ Query рдФрд░ TypedQuery рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ TypedQuery ред рдпрд╣ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдЬреЗрдкреАрдП рдХреЛ рд╕реВрдЪреА рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рдзрд╛рд░рд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк рдПрдХ рдмрдбрд╝реЗ ResultSet рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирдП рдереНрд░реЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп ResultSets рдпрд╛ рдкреГрд╖реНрдард╛рдВрдХрди рдХреЗ рдмреАрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдереНрд░реЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕реВрдЪреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп ResultSet рдФрд░ рдкреЗрдЬрд┐рдиреЗрд╢рди рддрдХрдиреАрдХ рдбреЗрдЯрд╛ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ, рдЬреЛ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддреА рд╣реИред

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

рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рдгрд╛рдо рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЗрдкреАрдП рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдБрдЧрд╛ рдЬрд╣рд╛рдБ рдпрд╣ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ рд╕реНрд╡рдпрдВ рдЕрдВрддрд╣реАрди рд╣реИрдВред рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдореИрдВ Job рдЗрдХрд╛рдИ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕реНрдЯреНрд░реАрдо рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реВрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ, рдЬрд╣рд╛рдВ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ Customer рдЦрд┐рд▓рд╛рдл Jobs рд╕реНрдЯреНрд░реАрдо рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ Query getResultStream() рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░, рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ customer рдФрд░ work date Job'a рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП customer рд╣реВрдВред

 public void findByCustomer(PoolCustomer customer){ Stream<Job> jobList = em.createQuery("select object(o) from Job o " + "where o.customer = :customer") .setParameter("customer", customer) .getResultStream(); jobList.map(j -> j.getCustomerId() + " ordered job " + j.getId() + " - Starting " + j.getWorkDate()) .forEach(jm -> System.out.println(jm)); } 


рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ Collectors .toList() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ Collectors .toList() ред

 public List<Job> findByCustomer(PoolCustomer customer){ Stream<Job> jobList = em.createQuery( "select object(o) from Job o " + "where o.customerId = :customer") .setParameter("customer", customer) .getResultStream(); return jobList.collect(Collectors.toList()); } 

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

 public List<Job> findByCustPoolShape(String poolShape){ Stream<Job> jobstream = em.createQuery( "select object(o) from Job o") .getResultStream(); return jobstream.filter( c -> poolShape.equals(c.getCustomerId().getPoolId().getShape())) .collect(Collectors.toList()); } 

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

рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдПрдиреЛрдЯреЗрд╢рди рд╕рдкреЛрд░реНрдЯ

рдЬрдм рдЬрд╛рд╡рд╛ рдПрд╕рдИ 8 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдПрдиреЛрдЯреЗрд╢рди рд╕рдВрднрд╡ рд╣реЛ рдЧрдП, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдШреЛрд╖рдгрд╛ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдпрд╛ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдПрдХ рд╣реА рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЗрдХрд╛рдИ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ @SqlResultSetMapping рдПрдиреЛрдЯреЗрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдкреБрди: рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХрдВрдЯреЗрдирд░ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдПрдиреЛрдЯреЗрд╢рди рди рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╕рдорд╛рди рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рднреА рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдПрдиреЛрдЯреЗрд╢рди рд╡рд░реНрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @Repeatable рдореЗрдЯрд╛-рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред @Repeatable рдореЗрдЯрд╛ рдПрдиреЛрдЯреЗрд╢рди рдХрдВрдЯреЗрдирд░ рдПрдиреЛрдЯреЗрд╢рди рд╡рд░реНрдЧ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд▓реЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NamedQuery рдПрдиреЛрдЯреЗрд╢рди NamedQuery рдЕрдм @Repeatable(NamedQueries.class) рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдПрдиреЛрдЯреЗрд╢рди рдЕрднреА рднреА рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдШреЛрд╖рдгрд╛ рдпрд╛ рд╡рд░реНрдЧ рдкрд░ рд╕рдорд╛рди рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ @Repeatable рдЗрд╕ рд╕рд╛рд░ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ @Repeatable рд╣реИред

рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк JPA 2.1 рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ @NamedQuery рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ @NamedQueries рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЕрдВрджрд░ @NamedQueries , рдЬреИрд╕рд╛ рдХрд┐ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 4 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 4

 @Entity @Table(name = "CUSTOMER") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Customer.findAll", query = "SELECT c FROM Customer c") , @NamedQuery(name = "Customer.findByCustomerId", query = "SELECT c FROM Customer c " + "WHERE c.customerId = :customerId") , @NamedQuery(name = "Customer.findByName", query = "SELECT c FROM Customer c " + "WHERE c.name = :name") . . .)}) public class Customer implements Serializable { . . . } 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреЗрдкреАрдП 2.2 рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рд╣реИред рдЪреВрдБрдХрд┐ @NamedQuery рдПрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдПрдиреЛрдЯреЗрд╢рди рд╣реИ, рдЗрд╕реЗ рдЗрдХрд╛рдИ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 5 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 5

 @Entity @Table(name = "CUSTOMER") @XmlRootElement @NamedQuery(name = "Customer.findAll", query = "SELECT c FROM Customer c") @NamedQuery(name = "Customer.findByCustomerId", query = "SELECT c FROM Customer c " + "WHERE c.customerId = :customerId") @NamedQuery(name = "Customer.findByName", query = "SELECT c FROM Customer c " + "WHERE c.name = :name") . . . public class Customer implements Serializable { . . . } 

рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдПрдиреЛрдЯреЗрд╢рди рдХреА рд╕реВрдЪреА:

  • @AssociationOverride
  • @AttributeOverride
  • @Convert
  • @JoinColumn
  • @MapKeyJoinColumn
  • @NamedEntityGraphy
  • @NamedNativeQuery
  • @NamedQuery
  • @NamedStoredProcedureQuery
  • @PersistenceContext
  • @PersistenceUnit
  • @PrimaryKeyJoinColumn
  • @SecondaryTable
  • @SqlResultSetMapping

рдирд┐рд╖реНрдХрд░реНрд╖

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

рдЕрдВрдд

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдкреНрд░рд╢реНрдиреЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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


All Articles