{"id":33049,"date":"2023-02-04T01:57:27","date_gmt":"2023-02-03T20:27:27","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/"},"modified":"2023-02-04T01:57:27","modified_gmt":"2023-02-03T20:27:27","slug":"solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/","title":{"rendered":"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-40141374\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"40141374\" data-parentid=\"40139662\" data-score=\"0\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Regardless of <em>good practice<\/em>, the point here is you have two options to model this:<\/p>\n<ol>\n<li>Elect to manually assign the <code>Department<\/code>&#8216;s Id on the <code>Employee<\/code>.<\/li>\n<li>Associate the new <code>Employee<\/code> with an existing <code>Department<\/code> entity at save.<\/li>\n<\/ol>\n<p>Which you pick really depends on a number of factors.<\/p>\n<p>Often the former is chosen when working with legacy systems where foreign key constraints were not imposed or in situations where you don&#8217;t want to impose those constraints.  This is often more of the rarer case of the two, but it makes sense under specific circumstances.<\/p>\n<p>The latter is the more favored approach because the entity domain model best represents not only the restrictions and constraints implied by the database model, but also conveys the restrictions that your domain expert uses.  For example, an <code>Employee<\/code> cannot be saved without being associated to a valid <code>Department<\/code>.  Therefore, you assign a <code>Department<\/code> to the employee and not its identifier.<\/p>\n<p>Naturally the choice you take will have some influence on the types of queries you can issue against the entity model, but the impact is minimal.<\/p>\n<pre><code>private Department getDepartmentById(Long departmentId)\n  throws InvalidDepartmentException {\n  try {\n    return entityManager.getReference( Department.class, departmentId );\n  }\n  catch ( EntityNotFoundException e ) {\n    throw new InvalidDepartmentException( departmentId, e );\n  }\n} \n\nprivate List&lt;Employee&gt; getEmployeesNoAssociation(Long departmentId) \n  throws InvalidDepartmentException {\n  final Department dept = getDepartmentById( departmentId );\n  return entityManager\n    .createQuery( \"SELECT e FROM Employee e WHERE e.departmentId = :id\", Employee.class )\n    .setParameter( \"id\", dept.getId() )\n    .getResultList();\n}\n\nprivate List&lt;Employee&gt; getEmployeesWithAssociation(Long departmentId) \n  throws InvalidDepartmentException {\n  final Department dept = getDepartmentById( departmentId );\n  return entityManager\n    .createQuery( \"SELECT e FROM Employee e WHERE e.department = :dept\", Employee.class )\n    .setParameter( \"dept\", dept )\n    .getResultList();\n}\n<\/code><\/pre>\n<p>In short, <em>good practice<\/em> is to model your domain as its intended to be used.  How that applies to whether you use association mappings depends highly on context of your situation.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Regardless of good practice, the point here is you have two options to model this: Elect to manually assign the Department&#8216;s Id on the Employee. Associate the new Employee with an existing Department entity at save. Which you pick really depends on a number of factors. Often the former is chosen when working with &#8230; <a title=\"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/\" aria-label=\"More on [Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[625,323,1200],"class_list":["post-33049","post","type-post","status-publish","format-standard","hentry","category-solved","tag-hibernate","tag-java","tag-jpa"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Regardless of good practice, the point here is you have two options to model this: Elect to manually assign the Department&#8216;s Id on the Employee. Associate the new Employee with an existing Department entity at save. Which you pick really depends on a number of factors. Often the former is chosen when working with ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-03T20:27:27+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed]\",\"datePublished\":\"2023-02-03T20:27:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/\"},\"wordCount\":235,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"hibernate\",\"java\",\"jpa\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/\",\"name\":\"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2023-02-03T20:27:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed] - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed] - JassWeb","og_description":"[ad_1] Regardless of good practice, the point here is you have two options to model this: Elect to manually assign the Department&#8216;s Id on the Employee. Associate the new Employee with an existing Department entity at save. Which you pick really depends on a number of factors. Often the former is chosen when working with ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/","og_site_name":"JassWeb","article_published_time":"2023-02-03T20:27:27+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed]","datePublished":"2023-02-03T20:27:27+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/"},"wordCount":235,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["hibernate","java","jpa"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/","name":"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2023-02-03T20:27:27+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-using-relationships-like-onetomany-manytoone-in-hibernate-is-good-practice-or-not-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Using relationships like @OneToMany, @ManyToOne in hibernate is good practice or not? [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/33049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=33049"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/33049\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=33049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=33049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=33049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}