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