我目前正在用Java-EE/Jax-RS/JPA構建rest-api。 我已經有一個工作數據庫+數據庫模型,並使用eclipse選項從現有表創建jpa實體。 我創建了一些基本的服務,現在我很好奇,使用jpa-association是否對構建rest-api有意義,因爲它有時會導致大量數據暴露。我也不確定在哪裏分離正在暴露的數據。Java Rest API - 使用JPA的資源/數據分離
E.g:
table "FOLDER" has an id, name
table "FOLDER_ITEM" has an id, folder_id (fk), item_id (fk)
table "ITEM" has an id, name, itemprop_id(fk)
table "ITEM_PROP" has an id, valueA, valueB, valueC
調用/文件夾/ 1目前輸出:
{
"id": 1,
"name": "Folder1",
"items": [
{
"id": 1,
"name": "pencil",
"item_prop": {
"id": "1",
"valueA": "example",
"valueB": "example",
"valueC": "example"
}
},...]
}
如果有很多連接到文件夾的項目,其加起來大量的數據。
所以我認爲通過創建服務來分開數據可能更簡單,更清潔/items/{id}一次只能給我一個項目。 但在這種情況下,我還必須創建一個服務來獲取文件夾的項目。例如/items /?withFolderId = 1 或甚至/文件夾/ 1 /項目。我看到如下選項:
1)使用JPA的協會,但標記項目的列表(文件夾類中)爲JSON-忽略/文件夾/ 1,並迫使項目的輸出調用當/ folders/1/items。
2)寫我自己的查詢
在後者的情況下,我問我自己「爲什麼我甚至使用JPA呢?」
雖然beeing由此我可能也不得不說,我所有的表都有一個用戶id的外鍵。 因此,我通常只想通過創建服務/users/1/folders來獲取特定用戶(當前登錄的用戶)的文件夾,並且此時我會將數據分開嗎? 我可以服務我的整個客戶端端點,這將導致與上述相同的問題。現在我們可以肯定地談論一大堆暴露的數據,這取決於用戶擁有多少文件夾以及文件夾包含多少項目。
{
"id":1
"name":"testuser"
"password":"PW"
"folders":
[{
"id": 1,
"name": "Folder1",
"items": [
{
"id": 1,
"name": "pencil",
"item_prop": {
"id": "1",
"valueA": "example",
"valueB": "example",
"valueC": "example"
}
},....]
},....]
}
我覺得我很擔心這個問題。有沒有任何建議或常見的方法來解決這個問題?
感謝您指出:)在過去的幾個小時裏,我只是自己想出了這件事。剩下的唯一問題就是在哪裏分離數據,但我想這個應用程序不同。 – LLLen