我目前正在用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