2017-10-20 52 views
0

比方說,我們有哪些需要三個域類被持久化:在Spring MVC中構建域對象的方法更正確嗎?

class House{ 
    private List<Room> rooms; 
    private Address address; 
} 

class Room{ 
    private String id; 
    ... 
} 

class Address{ 
    private String id; 
    ... 
} 
  1. 難道域對象有ID字段?
  2. 如果是,有什麼更好的:實現House類,就像它在問題的頂部完成一樣,或者用包含id的較輕的String s替換對象字段?

    class House { private List <'String> roomIds; private String addressId; }

謝謝!

+1

不要使用字符串作爲參考。使用對象「房間」,「地址」等 – Lino

回答

0

是的,每個域對象都應該有ID,因爲您必須提供數據庫中每個實體的唯一性。 Id字段的類型取決於您使用的數據庫。如果你使用sql數據庫,那麼它通常是長類型的。如果你使用MongoDb - 它是String。

class House {private List <'String> roomIds;私人字符串addressId; }

您不應該使用ID列表。這是不好的做法。改爲使用實體之間的關係。另外使用JPA構建域模型。在你的房子和房間之間的關係 - OneToMany,因爲一個特定的房子可以包括很多房間,但每個房間只能屬於一個房子。在地址...這是OneToOne關係。每個地址有單獨的房屋(平面)。你可以使用Address作爲可嵌入對象進入House。

class House{ 
    private long houseId; 
    private List<Room> rooms; 
    private Address address; 
} 

class Room{ 
    private int roomId; 
    private House house; 
} 

class Address{ 
    private long addressId; 
    ... 
} 
0

每類應該有一個ID,你需要使用@Id如果你使用Hibernate註釋。在設計你的模型時,你應該考慮兩種類型的鍵。

自然鍵 -
自然鍵(也稱爲業務鍵)是一種獨特的鑰匙,在關係模型數據庫設計中,即已經在現實世界中存在的屬性構成。它用於與業務相關的列。 ...一個自然鍵有時被稱爲域密鑰。

代理鍵 - 代理鍵是可以聲明爲主鍵而不是「真實」或自然鍵的任何列或一組列。有時可能有幾個自然鍵。

相關問題