{"id":484550,"date":"2026-06-22T12:13:35","date_gmt":"2026-06-22T12:13:35","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=484550"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=484550","title":{"rendered":"\u041a\u043e\u0433\u0434\u0430 Hibernate \u043f\u043b\u0435\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448 OneToOne Lazy Loading"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0414\u0440\u0443\u0437\u044c\u044f!<\/p>\n<p>\u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u041c\u0438\u0445\u0430\u0438\u043b \u041f\u043e\u043b\u0438\u0432\u0430\u0445\u0430, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043b\u0438\u0434\u0435\u0440 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\">\u043f\u0440\u043e\u0435\u043a\u0442\u0430 Axelix<\/a>.<\/p>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 <a href=\"https:\/\/spring-aio.ru\/advanced_hibernate\">\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Hibernate \u0432 Spring \u0410\u0439\u041e Academy<\/a> \u043c\u044b \u043a\u0440\u0430\u0435\u043c \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u0442\u0435\u043c\u0443, \u043a\u0430\u0441\u0430\u0435\u043c\u0443\u044e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e <code>@OneToOne<\/code> \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, Hibernate \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0433\u043e Eagerly, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u044f\u0432\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 <code>FetchType.LAZY<\/code>. \u0423 \u043f\u0430\u0440\u043d\u0435\u0439 \u0431\u044b\u043b \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 &#8212; <strong>\u043f\u043e\u0447\u0435\u043c\u0443?<\/strong><\/p>\n<p>\u0418 \u0437\u043d\u0430\u0435\u0442\u0435, \u043a \u043c\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e, \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0432 \u0441\u0435\u0442\u0438 \u044f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0440\u0435\u0448\u0438\u043b \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0430 \u0434\u0430\u0451\u0442 \u043f\u0440\u044f\u043c\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0442\u043e, <em>\u043f\u043e\u0447\u0435\u043c\u0443<\/em> Hibernate \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442.<\/p>\n<p>\u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u044f \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0427\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043a\u043e\u0435 <code>FetchType.LAZY<\/code>?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 <code>@OneToOne<\/code> \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c Lazy <strong>\u0438\u043c\u0435\u043d\u043d\u043e \u0432 Java<\/strong>?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c <code>@ManyToOne<\/code> \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c Lazy \u0432\u0441\u0435\u0433\u0434\u0430 (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044f \u043d\u0435 <code>final<\/code> \u043a\u043b\u0430\u0441\u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438)?<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u043e \u0448\u0430\u0433\u0430\u043c.<\/p>\n<h3>\u0427\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043a\u043e\u0435 FetchType.LAZY?<\/h3>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u043e\u0434\u043d\u0443 \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u043f\u0443\u0441\u043a\u0430\u044e\u0442. <code>FetchType.LAZY<\/code> \u043f\u043e <a href=\"https:\/\/jakarta.ee\/specifications\/persistence\/3.1\/apidocs\/jakarta.persistence\/jakarta\/persistence\/fetchtype\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 JPA \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c <em>hint<\/em><\/a>, \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443. \u0415\u0441\u043b\u0438 \u043f\u043e \u0441\u043f\u0435\u043a\u0435, \u0442\u043e <code>EAGER<\/code> \u2014 \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 (\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 <strong>\u043e\u0431\u044f\u0437\u0430\u043d<\/strong> \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443), \u0430 <code>LAZY<\/code> \u2014 \u044d\u0442\u043e \u043b\u0438\u0448\u044c <em>\u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0435<\/em> \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u044d\u0442\u043e \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043e\u043d \u201c\u0442\u0430\u043a \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u201d.<\/p>\n<p>\u0422\u0430\u043a \u0432\u043e\u0442, \u0432\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e \u0441\u0443\u0442\u0438 \u043f\u0440\u043e \u0442\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e Hibernate \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 <code>@OneToOne<\/code> \u044d\u0442\u043e \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0435 <strong>\u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e<\/strong> \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442. \u0418 \u0434\u0435\u043b\u043e \u043d\u0435 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Hibernate. \u0414\u0435\u043b\u043e \u0432 \u0441\u0430\u043c\u043e\u0439 Java.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 <code>fetch = LAZY<\/code> \u043d\u0430 \u0441\u0432\u044f\u0437\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0434\u0451\u0442 \u043a <strong>\u043e\u0434\u043d\u043e\u0439<\/strong> \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 (<code>@ManyToOne<\/code> \u0438\u043b\u0438 <code>@OneToOne<\/code>), \u0432\u044b \u043f\u0440\u043e\u0441\u0438\u0442\u0435 Hibernate: \u201c\u043d\u0435 \u0445\u043e\u0434\u0438 \u0432 \u0411\u0414 \u0437\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0440\u0430\u0437\u0443, \u0441\u0445\u043e\u0434\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0434\u043e\u201d.<\/p>\n<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u2014 <strong>\u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c<\/strong>. Hibernate \u0432 \u043f\u043e\u043b\u0435 \u043a\u043b\u0430\u0434\u0451\u0442 \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c, \u0430 \u043f\u0440\u043e\u043a\u0441\u0438, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u043b\u044e\u0431\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 (\u043a\u0440\u043e\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u0430 \u0434\u043b\u044f id), \u043f\u0440\u043e\u043a\u0441\u0438 \u201c\u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0435\u0442\u0441\u044f\u201d \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 <code>SELECT<\/code>.<\/p>\n<h3>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u041f\u0440\u0438\u043c\u0435\u0440 \u041a\u043e\u0433\u0434\u0430 Lazy Loading \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d<\/h3>\n<p>\u0422\u0443\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0443 \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u044b\u0448\u0435 (\u043f\u0440\u043e <code>final<\/code> \u043a\u043b\u0430\u0441\u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438). \u042d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u2014 \u044d\u0442\u043e <strong>\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0441\u0430\u0431\u043a\u043b\u0430\u0441\u0441 \u0432\u0430\u0448\u0435\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438<\/strong>. Hibernate \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0438\u0445 \u0432\u044b\u0437\u043e\u0432. \u0410 \u0440\u0430\u0437 \u044d\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 Java:<\/p>\n<ul>\n<li>\n<p>\u043a\u043b\u0430\u0441\u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 <strong>\u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c <\/strong><code><strong>final<\/strong><\/code> (\u043e\u0442 <code>final<\/code> \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f);<\/p>\n<\/li>\n<li>\n<p>\u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u0442\u043e\u0436\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c <code>final<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 (\u0445\u043e\u0442\u044f \u0431\u044b package-private) \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u043a\u043b\u0430\u0441\u0441 <code>final<\/code> \u2014 Hibernate \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438, \u0438 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043b\u0435\u043d\u0438\u0432\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435. \u0412\u043e\u0442 \u0432\u0430\u043c \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u201c\u0438\u043c\u0435\u043d\u043d\u043e \u0432 Java\u201d lazy \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f. <strong>\u041d\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439<\/strong>. \u0414\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435.<\/p>\n<h3>\u041a\u0440\u0430\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0439 \u041a\u0430\u043c\u0435\u043d\u044c<\/h3>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435, \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043d\u044e\u0430\u043d\u0441, \u0432\u043e\u043a\u0440\u0443\u0433 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0432\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f:<\/p>\n<blockquote>\n<p>ORM \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u043c\u0443 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u043e\u043a\u0441\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 <code>getUser<\/code>) &#8212; \u043e\u0431\u044a\u0435\u043a\u0442 proxy, \u0438\u043b\u0438 \u0436\u0435 <code>null<\/code>.<\/p>\n<\/blockquote>\n<p>\u041c\u043e\u0436\u0435\u0442, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044f \u0438\u043c\u0435\u044e \u0432 \u0432\u0438\u0434\u0443, \u043d\u043e \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043d\u0438\u0436\u0435.<\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u0432 Java \u043b\u0438\u0431\u043e <code>null<\/code>, \u043b\u0438\u0431\u043e \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 (\u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u043d\u0430 \u043f\u0440\u043e\u043a\u0441\u0438). \u0422\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043d\u0435 \u0434\u0430\u043d\u043e \u2014 \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e union \u0442\u0438\u043f\u0430 \u0432 Java, \u043a\u0430\u043a \u201c\u0441\u0441\u044b\u043b\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u043e \u043b\u0438 null, \u0442\u043e \u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442, \u0440\u0435\u0448\u0438\u043c \u043f\u043e\u0442\u043e\u043c\u201d. Hibernate, <strong>\u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438<\/strong>, \u043e\u0431\u044f\u0437\u0430\u043d \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441: \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u043e\u043b\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0443\u0434\u0430 <code>null<\/code>.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u0441\u0451: <strong>\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0447\u0435\u0433\u043e Hibernate \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435?<\/strong><\/p>\n<h3>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441 @ManyToOne<\/h3>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 <code>@ManyToOne<\/code>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b (\u0442.\u0435. \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c <code>Comment<\/code> \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435) <strong>\u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e<\/strong>. \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0443:<\/p>\n<pre><code class=\"java\">@Entityclass Comment {    @Id    Long id;    String text;    @ManyToOne(fetch = FetchType.LAZY)    @JoinColumn(name = \"post_id\") \/\/ &lt;-- \u044d\u0442\u043e\u0442 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043b\u0435\u0436\u0438\u0442 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 comment    Post post;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0413\u0434\u0435 \u0437\u0434\u0435\u0441\u044c foreign key? \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code>comment<\/code>. \u0421\u0442\u043e\u043b\u0431\u0435\u0446 <code>post_id<\/code> \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e Hibernate \u0438 \u0442\u0430\u043a \u0433\u0440\u0443\u0437\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0447\u0438\u0442\u0430\u0435\u0442 <code>Comment<\/code>.<\/p>\n<p>\u0418 \u044d\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0441\u0451. \u041a\u043e\u0433\u0434\u0430 Hibernate \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 <code>SELECT * FROM comment WHERE id = 1<\/code>, \u043e\u043d \u0432 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0435 <strong>\u0443\u0436\u0435 \u0432\u0438\u0434\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <\/strong><code><strong>post_id<\/strong><\/code>. \u0415\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043d\u0438 \u043e\u0434\u0438\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 <s>\u201c\u0430 \u0431\u044b\u043b \u043b\u0438 \u043c\u0430\u043b\u044c\u0447\u0438\u043a?\u201d<\/s> \u201c\u0430 \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0441\u0442?\u201d:<\/p>\n<ul>\n<li>\n<p><code>post_id IS NULL<\/code> \u2192 \u0441\u0432\u044f\u0437\u0438 \u043d\u0435\u0442 \u2192 \u043a\u043b\u0430\u0434\u0451\u043c \u0432 \u043f\u043e\u043b\u0435 \u0447\u0435\u0441\u0442\u043d\u044b\u0439 <code>null<\/code>. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 eager \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><code>post_id = 42<\/code> \u2192 \u0441\u0432\u044f\u0437\u044c <strong>\u0442\u043e\u0447\u043d\u043e<\/strong> \u0435\u0441\u0442\u044c, \u0438 \u043c\u044b \u0434\u0430\u0436\u0435 \u0437\u043d\u0430\u0435\u043c \u0435\u0451 id \u2192 \u043a\u043b\u0430\u0434\u0451\u043c \u043f\u0440\u043e\u043a\u0441\u0438 \u0441 <code>id = 42<\/code>. \u0422\u043e\u0436\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 eager \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0438\u0434\u0438\u0442\u0435? \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 Hibernate \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 <strong>\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e<\/strong>, \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0447\u0442\u043e \u0443\u0436\u0435 \u0443 \u043d\u0435\u0433\u043e \u043d\u0430 \u0440\u0443\u043a\u0430\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 <code>@ManyToOne<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0435\u043d\u0438\u0432 <strong>\u0432\u0441\u0435\u0433\u0434\u0430<\/strong> \u2014 \u0438 \u043a\u043e\u0433\u0434\u0430 \u0441\u0432\u044f\u0437\u044c nullable, \u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442. \u0420\u0430\u0437\u043d\u0438\u0446\u044b \u043d\u0435\u0442.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u0443\u043d\u0435\u0441\u0442\u0438: \u043f\u0440\u0438 <code>@ManyToOne<\/code> <strong>\u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e<\/strong>. FK \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0432 \u043d\u0430\u0448\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435. \u041c\u044b \u2014 owning side \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e. \u041f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 <code>@ManyToOne<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442.<\/p>\n<h3>@OneToOne, \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u041f\u0435\u0440\u0432\u044b\u0439. \u041c\u044b \u0412\u043b\u0430\u0434\u0435\u0435\u043c \u0421\u0432\u044f\u0437\u044c\u044e<\/h3>\n<p>\u0410 \u0432\u043e\u0442 \u0441 <code>@OneToOne<\/code> \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 edge-case. \u041d\u043e \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u2014 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e \u0438 FK \u043b\u0435\u0436\u0438\u0442 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435:<\/p>\n<pre><code class=\"java\">@Entityclass User {    @Id    Long id;    @OneToOne(fetch = FetchType.LAZY)    @JoinColumn(name = \"passport_id\") \/\/ &lt;-- \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 user    Passport passport;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u0430 \u0436\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u0447\u0442\u043e \u0438 \u0441 <code>@ManyToOne<\/code>. FK <code>passport_id<\/code> \u043b\u0435\u0436\u0438\u0442 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 <code>user<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0438 \u0442\u0430\u043a \u0447\u0438\u0442\u0430\u0435\u043c. Hibernate \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 <code>User<\/code>, \u0432\u0438\u0434\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>passport_id<\/code> \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 <strong>\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e<\/strong> \u0440\u0435\u0448\u0430\u0435\u0442: <code>null<\/code> \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438. Lazy \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u0435: <strong>owning <\/strong><code><strong>@OneToOne<\/strong><\/code><strong> \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 <\/strong><code><strong>@ManyToOne<\/strong><\/code> \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f lazy loading. FK \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u043c\u044b \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u043b\u0435\u043d\u0438\u0432\u043e\u0441\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430.<\/p>\n<h3>@OneToOne, \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0412\u0442\u043e\u0440\u043e\u0439. \u041c\u044b \u043d\u0435 \u0412\u043b\u0430\u0434\u0435\u0435\u043c \u0421\u0432\u044f\u0437\u044c\u044e<\/h3>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u2014 \u043c\u044b \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e, \u0442.\u0435. \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c <code>mappedBy<\/code>.  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0442 \u043b\u0438\u0446\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 <code>Passport<\/code>:<\/p>\n<pre><code class=\"java\">@Entityclass Passport {    @Id    Long id;    @OneToOne(        mappedBy = \"passport\",          \/\/ &lt;-- FK \u041d\u0415 \u0443 \u043d\u0430\u0441, \u043e\u043d \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 user        fetch = FetchType.LAZY,        optional = true                  \/\/ &lt;-- \u0441\u0432\u044f\u0437\u044c nullable (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u043a \u0438 \u0435\u0441\u0442\u044c)    )    User user;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 edge-case: <strong>\u0441\u0432\u044f\u0437\u044c nullable, \u0438 \u043c\u044b \u0435\u0439 \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u0435\u043c<\/strong>. FK (<code>passport_id<\/code>) \u043b\u0435\u0436\u0438\u0442 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code>user<\/code>, \u0430 \u043c\u044b \u0433\u0440\u0443\u0437\u0438\u043c <code>Passport<\/code>. \u0412 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 <code>passport<\/code> <strong>\u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0435\u0441\u0442\u044c \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u043e\u0431 \u044d\u0442\u043e\u043c:<\/p>\n<blockquote>\n<p>ORM \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u043c\u0443 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u043e\u043a\u0441\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 <code>getUser<\/code>) &#8212; \u043e\u0431\u044a\u0435\u043a\u0442 proxy, \u0438\u043b\u0438 \u0436\u0435 <code>null<\/code>.<\/p>\n<\/blockquote>\n<p>Hibernate \u0433\u0440\u0443\u0437\u0438\u0442 <code>Passport<\/code> \u0438 \u043e\u0431\u044f\u0437\u0430\u043d <strong>\u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u0448\u0438\u0442\u044c<\/strong> \u2014 \u043a\u043b\u0430\u0441\u0442\u044c \u0432 \u043f\u043e\u043b\u0435 <code>user<\/code> \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u043b\u0438 <code>null<\/code>. \u041d\u043e \u043a\u0430\u043a? \u0412 \u0441\u0442\u0440\u043e\u043a\u0435 <code>passport<\/code> \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0435\u0442.<\/p>\n<p>\u0415\u0449\u0451 \u0440\u0430\u0437 &#8212; \u0432\u044b \u0436\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e Hibernate <strong>\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0443\u0434\u0430 Proxy \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0435\u0448\u0430\u0442\u044c<\/strong> &#8212; \u0430 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 User-\u0430 \u043d\u0435\u0442? \u0422\u043e \u0442\u043e\u0433\u0434\u0430 \u0447\u0442\u043e? \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f <code>passport.getUser()<\/code> \u0432\u0435\u0440\u043d\u0443\u043b \u043d\u0435 <code>null<\/code>, \u0430 User-\u0430 \u043d\u0435\u0442. \u0410 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d:<\/p>\n<pre><code class=\"java\">User user = passport.getUser();if (user != null) {    doProcess(user); \/\/ &lt;-- \u0432\u043e\u0442 \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043c\u0431\u0430 \u0432\u043d\u0443\u0442\u0440\u0438}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u0440\u043e\u043a\u0430 <code>user<\/code> \u0441 <code>passport_id = \u043d\u0430\u0448_id<\/code>, Hibernate <strong>\u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 <\/strong><code><strong>user<\/strong><\/code>. \u0418\u043d\u0430\u0447\u0435 \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0438\u0441\u043a\u0443\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0435 <code>null<\/code> \u0442\u0430\u043c, \u0433\u0434\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0435\u0440\u043d\u0443\u0442\u044c <code>null<\/code>:<\/p>\n<pre><code class=\"sql\">SELECT id FROM user WHERE passport_id = ?<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<ul>\n<li>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u0432\u0435\u0440\u043d\u0443\u043b \u0441\u0442\u0440\u043e\u043a\u0443 \u2192 \u0441\u0432\u044f\u0437\u044c \u0435\u0441\u0442\u044c \u2192 \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u0432\u0435\u0440\u043d\u0443\u043b \u043d\u0438\u0447\u0435\u0433\u043e \u2192 \u0441\u0432\u044f\u0437\u0438 \u043d\u0435\u0442 \u2192 \u043d\u0430\u0434\u043e \u043a\u043b\u0430\u0441\u0442\u044c <code>null<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: <strong>\u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u043d\u0443\u0436\u0435\u043d \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u043e\u043a\u0441\u0438, Hibernate \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b \u0437\u0430\u043f\u0440\u043e\u0441.<\/strong> \u0410 \u0440\u0430\u0437 \u0437\u0430\u043f\u0440\u043e\u0441 \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d, \u043a\u0430\u043a\u043e\u0439 \u0441\u043c\u044b\u0441\u043b \u0432 \u043b\u0435\u043d\u0438\u0432\u043e\u0441\u0442\u0438? \u041e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c-\u0442\u043e \u0443\u0436\u0435 \u043d\u0435\u0447\u0435\u0433\u043e \u2014 \u043f\u043e\u0445\u043e\u0434 \u0432 \u0411\u0414 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 Hibernate \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u0440\u0443\u0437\u0438\u0442 \u0441\u0432\u044f\u0437\u044c \u0436\u0430\u0434\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u0437\u0434\u0435\u0441\u044c \u0436\u0435. \u0412\u0430\u0448 <code>fetch = LAZY<\/code> \u043c\u043e\u043b\u0447\u0430 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<p>\u0412\u043e\u0442 \u0432\u0430\u043c \u0438 \u0432\u0435\u0441\u044c \u043d\u0430\u0440\u0430\u0442\u0438\u0432 \u043e\u0434\u043d\u043e\u0439 \u0444\u0440\u0430\u0437\u043e\u0439:<\/p>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 Hibernate \u043c\u043e\u0436\u0435\u0442 \u0438\u0437 \u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0447\u0442\u043e \u043e\u043d \u0438 \u0442\u0430\u043a \u0433\u0440\u0443\u0437\u0438\u0442 \u0438\u0437 master-\u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043f\u043e\u043d\u044f\u0442\u044c, <strong>\u0435\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u0438\u043b\u0438 \u043d\u0435\u0442<\/strong> \u2014 lazy \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0447\u0443\u0436\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u2014 lazy \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0443\u0436\u0435 \u0438 \u0435\u0441\u0442\u044c \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0445\u043e\u0434 \u0432 \u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c.<\/p>\n<\/blockquote>\n<h3>\u0421\u043f\u0430\u0441\u0430\u0435\u0442 optional = false<\/h3>\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 <code>optional = false<\/code> \u0441\u043f\u0430\u0441\u0430\u0435\u0442. \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 Hibernate:<\/p>\n<blockquote>\n<p>\u0414\u0440\u0443\u0436\u0438\u0449\u0435, \u043d\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0439, \u043a\u043b\u0430\u0434\u0438 Proxy. \u042f \u0442\u0435\u0431\u0435 <strong>\u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e<\/strong>, \u0447\u0442\u043e \u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0431\u0443\u0434\u0435\u0442, \u0442\u0430\u043c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 <code>null<\/code><\/p>\n<\/blockquote>\n<p>\u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443:<\/p>\n<pre><code class=\"java\">@OneToOne(    mappedBy = \"passport\",    fetch = FetchType.LAZY,    optional = false                 \/\/ &lt;-- \u041c\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0432\u044f\u0437\u0438)User user;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438 <code>optional = false<\/code> \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442: \u201c\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430 <strong>\u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e<\/strong> \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u201d. \u0418 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u0443 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0451 \u043b\u043e\u043c\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0412\u043e\u0442 \u043e\u043d\u0430, \u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u044f:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0421\u0432\u044f\u0437\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0413\u0434\u0435 FK<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u201c\u0435\u0441\u0442\u044c\/\u043d\u0435\u0442\u201d \u0438\u0437 master-\u0441\u0442\u0440\u043e\u043a\u0438?<\/p>\n<\/th>\n<th>\n<p align=\"left\">Lazy?<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>@ManyToOne<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443 \u043d\u0430\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0434\u0430, \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e FK<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>@OneToOne<\/code> owning (<code>@JoinColumn<\/code>)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443 \u043d\u0430\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0434\u0430, \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e FK<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>@OneToOne<\/code> inverse, <code>optional=false<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443 \u0447\u0443\u0436\u043e\u0433\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435 \u043d\u0430\u0434\u043e \u2014 \u0441\u0432\u044f\u0437\u044c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0435\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>@OneToOne<\/code> inverse, <code>optional=true<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0443 \u0447\u0443\u0436\u043e\u0433\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043d\u0435\u0442<\/strong> \u2014 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 SELECT<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041d\u0435 \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043a\u043b\u0435\u0442\u043a\u0430, \u0433\u0434\u0435 lazy \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f, \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f. Nullable \u0441\u0432\u044f\u0437\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u0435\u043c.<\/p>\n<h3>\u0425\u043e\u0440\u043e\u0448\u043e, \u0430 \u043a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c<\/h3>\n<p>\u042d\u0442\u0438 \u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u044f \u0434\u0430\u044e \u0440\u0435\u0431\u044f\u0442\u0430\u043c <a href=\"https:\/\/spring-aio.ru\/advanced_hibernate\">\u0432 Spring \u0410\u0439\u041e \u0410\u043a\u0430\u0434\u0435\u043c\u0438\u0438<\/a>, \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e \u0438\u0445 \u0438 \u0437\u0434\u0435\u0441\u044c \u2014 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432, \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u044f \u044d\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e.<\/p>\n<p><strong>1. \u0415\u0441\u043b\u0438 \u0441\u0432\u044f\u0437\u044c \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u2014 \u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c Hibernate.<\/strong> \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043b\u044e\u0434\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 <code>optional = true<\/code> (\u0434\u0435\u0444\u043e\u043b\u0442) \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e \u0438\u043d\u0435\u0440\u0446\u0438\u0438, \u0445\u043e\u0442\u044f \u0432 \u0438\u0445 \u0434\u043e\u043c\u0435\u043d\u0435 \u043f\u0430\u0441\u043f\u043e\u0440\u0442 \u0431\u0435\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435. \u041f\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 <code>optional = false<\/code> \u2014 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 lazy \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. \u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0441\u0442\u043d\u043e: \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u0430\u0432\u0434\u043e\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043d\u0430\u0447\u0435 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 <code>EntityNotFoundException<\/code> \u043d\u0430 \u0440\u043e\u0432\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043d\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f.<\/p>\n<p><strong>2. \u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0435\u0440\u0436\u0438\u0442\u0435 FK \u043d\u0430 \u0442\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u0447\u0430\u0449\u0435 \u0445\u043e\u0434\u0438\u0442\u0435 \u043b\u0435\u043d\u0438\u0432\u043e.<\/strong> Owning side \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u0435\u043d\u0438\u0432. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0433\u0440\u0443\u0437\u0438\u0442\u0435 <code>Passport<\/code> \u0438 \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0442\u0430\u0449\u0438\u0442\u044c <code>User<\/code>, \u0442\u043e, \u043c\u043e\u0436\u0435\u0442, FK \u0441\u0442\u043e\u0438\u0442 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u0431\u044b\u043b <code>Passport<\/code>. \u0414\u0438\u0437\u0430\u0439\u043d \u0441\u0445\u0435\u043c\u044b \u2014 \u044d\u0442\u043e \u0440\u044b\u0447\u0430\u0433, \u0438 \u0438\u043c \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e.<\/p>\n<p><strong>3. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043e\u0431\u0449\u0438\u0439 primary key (<\/strong><code><strong>@MapsId<\/strong><\/code><strong>).<\/strong> \u041a\u043e\u0433\u0434\u0430 \u0443 \u0434\u0432\u0443\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043e\u0431\u0449\u0438\u0439 PK, \u201c\u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0430\u044f\u201d \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0432\u044f\u0437\u0438 \u043f\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 id, \u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435. \u042d\u0442\u043e \u043a\u0441\u0442\u0430\u0442\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c true-<code>@OneToOne<\/code>.<\/p>\n<p><strong>4. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Bytecode.<\/strong> \u041c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c (<code>hibernate-enhance-maven-plugin<\/code> \u0438\u043b\u0438 \u0430\u0433\u0435\u043d\u0442). \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Hibernate \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c <strong>\u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u043b\u044e<\/strong> \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0422\u043e\u0433\u0434\u0430 \u0434\u0430\u0436\u0435 nullable inverse-\u0441\u0432\u044f\u0437\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c: \u0437\u0430\u043f\u0440\u043e\u0441 \u201c\u0435\u0441\u0442\u044c \u043b\u0438 user\u201d \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0442\u0440\u043e\u043d\u0435\u0442\u0435 \u043f\u043e\u043b\u0435 <code>user<\/code>. \u0421\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0447\u0438\u0439, \u043d\u043e \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443 \u2014 \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u201c\u043f\u0440\u043e\u0441\u0442\u043e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u201d, \u044d\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0430\u0448\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438, \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u042f \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0432\u044b\u0435 \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043f\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442.<\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434<\/h3>\n<p>\u0412\u0441\u044f \u043c\u0430\u0433\u0438\u044f (\u0438 \u0432\u0441\u044f \u0431\u043e\u043b\u044c) <code>@OneToOne<\/code> \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443: <strong>\u043c\u043e\u0436\u0435\u0442 \u043b\u0438 Hibernate, \u0433\u043b\u044f\u0434\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0438 \u0442\u0430\u043a \u0433\u0440\u0443\u0437\u0438\u0442, \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u2014 \u0435\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u0438\u043b\u0438 \u043d\u0435\u0442?<\/strong><\/p>\n<ul>\n<li>\n<p><code>@ManyToOne<\/code> \u2014 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e FK \u043b\u0435\u0436\u0438\u0442 \u0443 \u043d\u0430\u0441. \u041c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e. Lazy \u043d\u0435 \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430.<\/p>\n<\/li>\n<li>\n<p><code>@OneToOne<\/code> owning \u2014 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, FK \u0443 \u043d\u0430\u0441.<\/p>\n<\/li>\n<li>\n<p><code>@OneToOne<\/code> inverse <code>optional=false<\/code> \u2014 \u0441\u0432\u044f\u0437\u044c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0435\u0441\u0442\u044c. Lazy \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><code>@OneToOne<\/code> inverse <code>optional=true<\/code> \u2014 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0443\u0431\u0438\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u0443 \u0438\u0434\u0435\u044e \u043b\u0435\u043d\u0438\u0432\u043e\u0441\u0442\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 Hibernate \u0433\u0440\u0443\u0437\u0438\u0442 eagerly.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043d\u0435\u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c\u044b\u0439 \u043b\u0438\u0448\u043d\u0438\u0439 <code>SELECT<\/code> \u043d\u0430 <code>@OneToOne<\/code>, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0441\u0435\u0431\u044f: \u0432\u043b\u0430\u0434\u0435\u044e \u043b\u0438 \u044f \u044d\u0442\u043e\u0439 \u0441\u0432\u044f\u0437\u044c\u044e, \u0438 nullable \u043b\u0438 \u043e\u043d\u0430? \u0412 99% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u0442\u0432\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043c.<\/p>\n<p>\u0423\u0434\u0430\u0447\u0438 \u0412\u0441\u0435\u043c!<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1050462\/\">https:\/\/habr.com\/ru\/articles\/1050462\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0414\u0440\u0443\u0437\u044c\u044f!\u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u041c\u0438\u0445\u0430\u0438\u043b \u041f\u043e\u043b\u0438\u0432\u0430\u0445\u0430, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043b\u0438\u0434\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Axelix.\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Hibernate \u0432 Spring \u0410\u0439\u041e Academy \u043c\u044b \u043a\u0440\u0430\u0435\u043c \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438 \u0442\u0435\u043c\u0443, \u043a\u0430\u0441\u0430\u0435\u043c\u0443\u044e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e @OneToOne \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, Hibernate \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0433\u043e Eagerly, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u044f\u0432\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 FetchType.LAZY. \u0423 \u043f\u0430\u0440\u043d\u0435\u0439 \u0431\u044b\u043b \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 &#8212; \u043f\u043e\u0447\u0435\u043c\u0443?\u0418 \u0437\u043d\u0430\u0435\u0442\u0435, \u043a \u043c\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e, \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0432 \u0441\u0435\u0442\u0438 \u044f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0440\u0435\u0448\u0438\u043b \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0430 \u0434\u0430\u0451\u0442 \u043f\u0440\u044f\u043c\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0442\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 Hibernate \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442.\u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u044f \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c:\u0427\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043a\u043e\u0435 FetchType.LAZY?\u041f\u043e\u0447\u0435\u043c\u0443 @OneToOne \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c Lazy \u0438\u043c\u0435\u043d\u043d\u043e \u0432 Java?\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c @ManyToOne \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c Lazy \u0432\u0441\u0435\u0433\u0434\u0430 (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044f \u043d\u0435 final \u043a\u043b\u0430\u0441\u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438)?\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u043e \u0448\u0430\u0433\u0430\u043c.\u0427\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043a\u043e\u0435 FetchType.LAZY?\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u043e\u0434\u043d\u0443 \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u043f\u0443\u0441\u043a\u0430\u044e\u0442. FetchType.LAZY \u043f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 JPA \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c hint, \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443. \u0415\u0441\u043b\u0438 \u043f\u043e \u0441\u043f\u0435\u043a\u0435, \u0442\u043e EAGER \u2014 \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 (\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u043e\u0431\u044f\u0437\u0430\u043d \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443), \u0430 LAZY \u2014 \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u044d\u0442\u043e \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043e\u043d \u201c\u0442\u0430\u043a \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u201d.\u0422\u0430\u043a \u0432\u043e\u0442, \u0432\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e \u0441\u0443\u0442\u0438 \u043f\u0440\u043e \u0442\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e Hibernate \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 @OneToOne \u044d\u0442\u043e \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442. \u0418 \u0434\u0435\u043b\u043e \u043d\u0435 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Hibernate. \u0414\u0435\u043b\u043e \u0432 \u0441\u0430\u043c\u043e\u0439 Java.\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 fetch = LAZY \u043d\u0430 \u0441\u0432\u044f\u0437\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0434\u0451\u0442 \u043a \u043e\u0434\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 (@ManyToOne \u0438\u043b\u0438 @OneToOne), \u0432\u044b \u043f\u0440\u043e\u0441\u0438\u0442\u0435 Hibernate: \u201c\u043d\u0435 \u0445\u043e\u0434\u0438 \u0432 \u0411\u0414 \u0437\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0440\u0430\u0437\u0443, \u0441\u0445\u043e\u0434\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0434\u043e\u201d.\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u2014 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c. Hibernate \u0432 \u043f\u043e\u043b\u0435 \u043a\u043b\u0430\u0434\u0451\u0442 \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c, \u0430 \u043f\u0440\u043e\u043a\u0441\u0438, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u043b\u044e\u0431\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 (\u043a\u0440\u043e\u043c\u0435 \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u0430 \u0434\u043b\u044f id), \u043f\u0440\u043e\u043a\u0441\u0438 \u201c\u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0435\u0442\u0441\u044f\u201d \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 SELECT.\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u041f\u0440\u0438\u043c\u0435\u0440 \u041a\u043e\u0433\u0434\u0430 Lazy Loading \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d\u0422\u0443\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0443 \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u044b\u0448\u0435 (\u043f\u0440\u043e final \u043a\u043b\u0430\u0441\u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438). \u042d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u2014 \u044d\u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0441\u0430\u0431\u043a\u043b\u0430\u0441\u0441 \u0432\u0430\u0448\u0435\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438. Hibernate \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0438\u0445 \u0432\u044b\u0437\u043e\u0432. \u0410 \u0440\u0430\u0437 \u044d\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 Java:\u043a\u043b\u0430\u0441\u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c final (\u043e\u0442 final \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f);\u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u0442\u043e\u0436\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c final;\u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 (\u0445\u043e\u0442\u044f \u0431\u044b package-private) \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.\u0415\u0441\u043b\u0438 \u043a\u043b\u0430\u0441\u0441 final \u2014 Hibernate \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438, \u0438 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043b\u0435\u043d\u0438\u0432\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435. \u0412\u043e\u0442 \u0432\u0430\u043c \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u201c\u0438\u043c\u0435\u043d\u043d\u043e \u0432 Java\u201d lazy \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f. \u041d\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u0414\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435.\u041a\u0440\u0430\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0439 \u041a\u0430\u043c\u0435\u043d\u044c\u0412\u043e\u043e\u0431\u0449\u0435, \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043d\u044e\u0430\u043d\u0441, \u0432\u043e\u043a\u0440\u0443\u0433 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0432\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f:ORM \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u043c\u0443 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u043e\u043a\u0441\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 getUser) &#8212; \u043e\u0431\u044a\u0435\u043a\u0442 proxy, \u0438\u043b\u0438 \u0436\u0435 null.\u041c\u043e\u0436\u0435\u0442, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044f \u0438\u043c\u0435\u044e \u0432 \u0432\u0438\u0434\u0443, \u043d\u043e \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043d\u0438\u0436\u0435.\u0421\u0441\u044b\u043b\u043a\u0430 \u0432 Java \u043b\u0438\u0431\u043e null, \u043b\u0438\u0431\u043e \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 (\u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u043d\u0430 \u043f\u0440\u043e\u043a\u0441\u0438). \u0422\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043d\u0435 \u0434\u0430\u043d\u043e \u2014 \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e union \u0442\u0438\u043f\u0430 \u0432 Java, \u043a\u0430\u043a \u201c\u0441\u0441\u044b\u043b\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u043e \u043b\u0438 null, \u0442\u043e \u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442, \u0440\u0435\u0448\u0438\u043c \u043f\u043e\u0442\u043e\u043c\u201d. Hibernate, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u043e\u0431\u044f\u0437\u0430\u043d \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441: \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u043e\u043b\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0443\u0434\u0430 null.\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u0441\u0451: \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0447\u0435\u0433\u043e Hibernate \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435?\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441 @ManyToOne\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 @ManyToOne, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b (\u0442.\u0435. \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c Comment \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435) \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e. \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0443:@Entityclass Comment {    @Id    Long id;    String text;    @ManyToOne(fetch = FetchType.LAZY)    @JoinColumn(name = &#171;post_id&#187;) \/\/ &lt;&#8212; \u044d\u0442\u043e\u0442 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043b\u0435\u0436\u0438\u0442 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 comment    Post post;}\u0413\u0434\u0435 \u0437\u0434\u0435\u0441\u044c foreign key? \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 comment. \u0421\u0442\u043e\u043b\u0431\u0435\u0446 post_id \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e Hibernate \u0438 \u0442\u0430\u043a \u0433\u0440\u0443\u0437\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0447\u0438\u0442\u0430\u0435\u0442 Comment.\u0418 \u044d\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0441\u0451. \u041a\u043e\u0433\u0434\u0430 Hibernate \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 SELECT * FROM comment WHERE id = 1, \u043e\u043d \u0432 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0435 \u0443\u0436\u0435 \u0432\u0438\u0434\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 post_id. \u0415\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043d\u0438 \u043e\u0434\u0438\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u201c\u0430 \u0431\u044b\u043b \u043b\u0438 \u043c\u0430\u043b\u044c\u0447\u0438\u043a?\u201d \u201c\u0430 \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0441\u0442?\u201d:post_id IS NULL \u2192 \u0441\u0432\u044f\u0437\u0438 \u043d\u0435\u0442 \u2192 \u043a\u043b\u0430\u0434\u0451\u043c \u0432 \u043f\u043e\u043b\u0435 \u0447\u0435\u0441\u0442\u043d\u044b\u0439 null. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 eager \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.post_id = 42 \u2192 \u0441\u0432\u044f\u0437\u044c \u0442\u043e\u0447\u043d\u043e \u0435\u0441\u0442\u044c, \u0438 \u043c\u044b \u0434\u0430\u0436\u0435 \u0437\u043d\u0430\u0435\u043c \u0435\u0451 id \u2192 \u043a\u043b\u0430\u0434\u0451\u043c \u043f\u0440\u043e\u043a\u0441\u0438 \u0441 id = 42. \u0422\u043e\u0436\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 eager \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.\u0412\u0438\u0434\u0438\u0442\u0435? \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 Hibernate \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0447\u0442\u043e \u0443\u0436\u0435 \u0443 \u043d\u0435\u0433\u043e \u043d\u0430 \u0440\u0443\u043a\u0430\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 @ManyToOne \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0435\u043d\u0438\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u2014 \u0438 \u043a\u043e\u0433\u0434\u0430 \u0441\u0432\u044f\u0437\u044c nullable, \u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442. \u0420\u0430\u0437\u043d\u0438\u0446\u044b \u043d\u0435\u0442.\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u0443\u043d\u0435\u0441\u0442\u0438: \u043f\u0440\u0438 @ManyToOne \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e. FK \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0432 \u043d\u0430\u0448\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435. \u041c\u044b \u2014 owning side \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e. \u041f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 @ManyToOne \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442.@OneToOne, \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u041f\u0435\u0440\u0432\u044b\u0439. \u041c\u044b \u0412\u043b\u0430\u0434\u0435\u0435\u043c \u0421\u0432\u044f\u0437\u044c\u044e\u0410 \u0432\u043e\u0442 \u0441 @OneToOne \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 edge-case. \u041d\u043e \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u2014 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e \u0438 FK \u043b\u0435\u0436\u0438\u0442 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435:@Entityclass User {    @Id    Long id;    @OneToOne(fetch = FetchType.LAZY)    @JoinColumn(name = &#171;passport_id&#187;) \/\/ &lt;&#8212; \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 user    Passport passport;}\u042d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u0430 \u0436\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u0447\u0442\u043e \u0438 \u0441 @ManyToOne. FK passport_id \u043b\u0435\u0436\u0438\u0442 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 user, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0438 \u0442\u0430\u043a \u0447\u0438\u0442\u0430\u0435\u043c. Hibernate \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 User, \u0432\u0438\u0434\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 passport_id \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0440\u0435\u0448\u0430\u0435\u0442: null \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438. Lazy \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e.\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u0435: owning @OneToOne \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 @ManyToOne \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f lazy loading. FK \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u043c\u044b \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u043b\u0435\u043d\u0438\u0432\u043e\u0441\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430.@OneToOne, \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0412\u0442\u043e\u0440\u043e\u0439. \u041c\u044b \u043d\u0435 \u0412\u043b\u0430\u0434\u0435\u0435\u043c \u0421\u0432\u044f\u0437\u044c\u044e\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u2014 \u043c\u044b \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u0435\u043c \u0441\u0432\u044f\u0437\u044c\u044e, \u0442.\u0435. \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c mappedBy.  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0442 \u043b\u0438\u0446\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 Passport:@Entityclass Passport {    @Id    Long id;    @OneToOne(        mappedBy = &#171;passport&#187;,          \/\/ &lt;&#8212; FK \u041d\u0415 \u0443 \u043d\u0430\u0441, \u043e\u043d \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 user        fetch = FetchType.LAZY,        optional = true                  \/\/ &lt;&#8212; \u0441\u0432\u044f\u0437\u044c nullable (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u043a \u0438 \u0435\u0441\u0442\u044c)    )    User user;}\u0412\u043e\u0442 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 edge-case: \u0441\u0432\u044f\u0437\u044c nullable, \u0438 \u043c\u044b \u0435\u0439 \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u0435\u043c. FK (passport_id) \u043b\u0435\u0436\u0438\u0442 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 user, \u0430 \u043c\u044b \u0433\u0440\u0443\u0437\u0438\u043c Passport. \u0412 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 passport \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0435\u0441\u0442\u044c \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043b\u0438 \u043d\u0435\u0442.\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u043e\u0431 \u044d\u0442\u043e\u043c:ORM \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u043c\u0443 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u043e\u043a\u0441\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 getUser) &#8212; \u043e\u0431\u044a\u0435\u043a\u0442 proxy, \u0438\u043b\u0438 \u0436\u0435 null.Hibernate \u0433\u0440\u0443\u0437\u0438\u0442 Passport \u0438 \u043e\u0431\u044f\u0437\u0430\u043d \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u0448\u0438\u0442\u044c \u2014 \u043a\u043b\u0430\u0441\u0442\u044c \u0432 \u043f\u043e\u043b\u0435 user \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u043b\u0438 null. \u041d\u043e \u043a\u0430\u043a? \u0412 \u0441\u0442\u0440\u043e\u043a\u0435 passport \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0435\u0442.\u0415\u0449\u0451 \u0440\u0430\u0437 &#8212; \u0432\u044b \u0436\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e Hibernate \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0443\u0434\u0430 Proxy \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0435\u0448\u0430\u0442\u044c &#8212; \u0430 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 User-\u0430 \u043d\u0435\u0442? \u0422\u043e \u0442\u043e\u0433\u0434\u0430 \u0447\u0442\u043e? \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f passport.getUser() \u0432\u0435\u0440\u043d\u0443\u043b \u043d\u0435 null, \u0430 User-\u0430 \u043d\u0435\u0442. \u0410 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d:User user = passport.getUser();if (user != null) {    doProcess(user); \/\/ &lt;&#8212; \u0432\u043e\u0442 \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043c\u0431\u0430 \u0432\u043d\u0443\u0442\u0440\u0438}\u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u0440\u043e\u043a\u0430 user \u0441 passport_id = \u043d\u0430\u0448_id, Hibernate \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 user. \u0418\u043d\u0430\u0447\u0435 \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0438\u0441\u043a\u0443\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0435 null \u0442\u0430\u043c, \u0433\u0434\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0435\u0440\u043d\u0443\u0442\u044c null:SELECT id FROM user WHERE passport_id = ?\u0417\u0430\u043f\u0440\u043e\u0441 \u0432\u0435\u0440\u043d\u0443\u043b \u0441\u0442\u0440\u043e\u043a\u0443 \u2192 \u0441\u0432\u044f\u0437\u044c \u0435\u0441\u0442\u044c \u2192 \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438.\u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u0432\u0435\u0440\u043d\u0443\u043b \u043d\u0438\u0447\u0435\u0433\u043e \u2192 \u0441\u0432\u044f\u0437\u0438 \u043d\u0435\u0442 \u2192 \u043d\u0430\u0434\u043e \u043a\u043b\u0430\u0441\u0442\u044c null.\u041d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u043d\u0443\u0436\u0435\u043d \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u043e\u043a\u0441\u0438, Hibernate \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b \u0437\u0430\u043f\u0440\u043e\u0441. \u0410 \u0440\u0430\u0437 \u0437\u0430\u043f\u0440\u043e\u0441 \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d, \u043a\u0430\u043a\u043e\u0439 \u0441\u043c\u044b\u0441\u043b \u0432 \u043b\u0435\u043d\u0438\u0432\u043e\u0441\u0442\u0438? \u041e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c-\u0442\u043e \u0443\u0436\u0435 \u043d\u0435\u0447\u0435\u0433\u043e \u2014 \u043f\u043e\u0445\u043e\u0434 \u0432 \u0411\u0414 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 Hibernate \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u0440\u0443\u0437\u0438\u0442 \u0441\u0432\u044f\u0437\u044c \u0436\u0430\u0434\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u0437\u0434\u0435\u0441\u044c \u0436\u0435. \u0412\u0430\u0448 fetch = LAZY \u043c\u043e\u043b\u0447\u0430 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d.\u0412\u043e\u0442 \u0432\u0430\u043c \u0438 \u0432\u0435\u0441\u044c \u043d\u0430\u0440\u0430\u0442\u0438\u0432 \u043e\u0434\u043d\u043e\u0439 \u0444\u0440\u0430\u0437\u043e\u0439:\u0415\u0441\u043b\u0438 Hibernate \u043c\u043e\u0436\u0435\u0442 \u0438\u0437 \u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0447\u0442\u043e \u043e\u043d \u0438 \u0442\u0430\u043a \u0433\u0440\u0443\u0437\u0438\u0442 \u0438\u0437 master-\u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043f\u043e\u043d\u044f\u0442\u044c, \u0435\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u0438\u043b\u0438 \u043d\u0435\u0442 \u2014 lazy \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0447\u0443\u0436\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u2014 lazy \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0443\u0436\u0435 \u0438 \u0435\u0441\u0442\u044c \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0445\u043e\u0434 \u0432 \u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c.\u0421\u043f\u0430\u0441\u0430\u0435\u0442 optional = false\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 optional = false \u0441\u043f\u0430\u0441\u0430\u0435\u0442. \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 Hibernate:\u0414\u0440\u0443\u0436\u0438\u0449\u0435, \u043d\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0439, \u043a\u043b\u0430\u0434\u0438 Proxy. \u042f \u0442\u0435\u0431\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e, \u0447\u0442\u043e \u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0431\u0443\u0434\u0435\u0442, \u0442\u0430\u043c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 null\u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443:@OneToOne(    mappedBy = &#171;passport&#187;,    fetch = FetchType.LAZY,    optional = false                 \/\/ &lt;&#8212; \u041c\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0432\u044f\u0437\u0438)User user;\u041f\u043e \u0441\u0443\u0442\u0438 optional = false \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442: \u201c\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u201d. \u0418 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u0443 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0451 \u043b\u043e\u043c\u0430\u043b\u043e\u0441\u044c.\u0412\u043e\u0442 \u043e\u043d\u0430, \u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u044f:\u0421\u0432\u044f\u0437\u044c\u0413\u0434\u0435 FK\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u201c\u0435\u0441\u0442\u044c\/\u043d\u0435\u0442\u201d \u0438\u0437 master-\u0441\u0442\u0440\u043e\u043a\u0438?Lazy?@ManyToOne\u0443 \u043d\u0430\u0441\u0434\u0430, \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e FK\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442@OneToOne owning (@JoinColumn)\u0443 \u043d\u0430\u0441\u0434\u0430, \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e FK\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442@OneToOne inverse, optional=false\u0443 \u0447\u0443\u0436\u043e\u0433\u043e\u043d\u0435 \u043d\u0430\u0434\u043e \u2014 \u0441\u0432\u044f\u0437\u044c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0435\u0441\u0442\u044c\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442@OneToOne inverse, optional=true\u0443 \u0447\u0443\u0436\u043e\u0433\u043e\u043d\u0435\u0442 \u2014 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 SELECT\u041d\u0435 \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043a\u043b\u0435\u0442\u043a\u0430, \u0433\u0434\u0435 lazy \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f, \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f. Nullable \u0441\u0432\u044f\u0437\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u0435\u043c.\u0425\u043e\u0440\u043e\u0448\u043e, \u0430 \u043a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c\u042d\u0442\u0438 \u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u044f \u0434\u0430\u044e \u0440\u0435\u0431\u044f\u0442\u0430\u043c \u0432 Spring \u0410\u0439\u041e \u0410\u043a\u0430\u0434\u0435\u043c\u0438\u0438, \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e \u0438\u0445 \u0438 \u0437\u0434\u0435\u0441\u044c \u2014 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432, \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u044f \u044d\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e.1. \u0415\u0441\u043b\u0438 \u0441\u0432\u044f\u0437\u044c \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u2014 \u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c Hibernate. \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043b\u044e\u0434\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 optional = true (\u0434\u0435\u0444\u043e\u043b\u0442) \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e \u0438\u043d\u0435\u0440\u0446\u0438\u0438, \u0445\u043e\u0442\u044f \u0432 \u0438\u0445 \u0434\u043e\u043c\u0435\u043d\u0435 \u043f\u0430\u0441\u043f\u043e\u0440\u0442 \u0431\u0435\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435. \u041f\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 optional = false \u2014 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 lazy \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. \u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0441\u0442\u043d\u043e: \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u0430\u0432\u0434\u043e\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043d\u0430\u0447\u0435 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 EntityNotFoundException \u043d\u0430 \u0440\u043e\u0432\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043d\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f.2. \u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0435\u0440\u0436\u0438\u0442\u0435 FK \u043d\u0430 \u0442\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u0447\u0430\u0449\u0435 \u0445\u043e\u0434\u0438\u0442\u0435 \u043b\u0435\u043d\u0438\u0432\u043e. Owning side \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u0435\u043d\u0438\u0432. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0433\u0440\u0443\u0437\u0438\u0442\u0435 Passport \u0438 \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0442\u0430\u0449\u0438\u0442\u044c User, \u0442\u043e, \u043c\u043e\u0436\u0435\u0442, FK \u0441\u0442\u043e\u0438\u0442 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u0431\u044b\u043b Passport. \u0414\u0438\u0437\u0430\u0439\u043d \u0441\u0445\u0435\u043c\u044b \u2014 \u044d\u0442\u043e \u0440\u044b\u0447\u0430\u0433, \u0438 \u0438\u043c \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e.3. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043e\u0431\u0449\u0438\u0439 primary key (@MapsId). \u041a\u043e\u0433\u0434\u0430 \u0443 \u0434\u0432\u0443\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043e\u0431\u0449\u0438\u0439 PK, \u201c\u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0430\u044f\u201d \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u0432\u044f\u0437\u0438 \u043f\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 id, \u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435. \u042d\u0442\u043e \u043a\u0441\u0442\u0430\u0442\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c true-@OneToOne.4. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Bytecode. \u041c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-484550","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/484550","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=484550"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/484550\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=484550"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=484550"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=484550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}