前言:在java的世界中萬事萬物皆對(duì)象,而在一個(gè)工程中往往是涉及到多個(gè)對(duì)象。那么在處理多個(gè)對(duì)象之間的關(guān)系顯得尤為重要,對(duì)象關(guān)系大致可以分為四種。一對(duì)一、一對(duì)多、多對(duì)一、多對(duì)多,而一對(duì)一無需多講,一對(duì)多與多對(duì)一則是考慮的角度問題,其本質(zhì)都是一樣的,最后多對(duì)多也是可以拆分為一對(duì)多的關(guān)系。本例講解一個(gè)訂單與訂單明細(xì)的例子便屬于一個(gè)典型的一對(duì)多關(guān)系。
需求:本例需要做一個(gè)飯館管理客戶小型的點(diǎn)餐系統(tǒng),主要是管理客戶訂單。
誤區(qū):對(duì)于面向?qū)ο缶幊陶Z言的初學(xué)者來說建模時(shí)可能會(huì)定義一個(gè)訂單對(duì)象包含訂單編號(hào),訂單日期,訂單人數(shù),所定菜名,份數(shù),價(jià)格等屬性的一個(gè)對(duì)象。
正解:此處應(yīng)分為兩個(gè)對(duì)象,一個(gè)訂單對(duì)象(訂單號(hào),人數(shù),日期,等)一個(gè)訂單明細(xì)對(duì)象(所定菜名,份數(shù),價(jià)格等)。因?yàn)橐粋€(gè)對(duì)象與屬性的關(guān)系應(yīng)該是十分緊密的,比如說菜的價(jià)格是與菜關(guān)聯(lián)的并沒有與訂單存在直接關(guān)系。一個(gè)客戶(訂單對(duì)象)可能會(huì)點(diǎn)多個(gè)菜(訂單明細(xì)對(duì)象),這便是我們問題的引入點(diǎn)。
一對(duì)多配置方式一、使用jpa注解
首先看一下我們one端,也就是訂單對(duì)象端部分代碼
1 import java.util.Date; 2 import java.util.HashSet; 3<