我使用Spring Data JPA和Hibernate来模拟以下场景:
代码可以是:
@Entity
public class User {
@Id
public Long id;
public String name;
@OneToMany (mappedBy="user")
public List<CustomProperty> customProperties;
}
@Entity
public class Topic {
@Id
public Long id;
public String name;
@OneToMany (mappedBy="topic")
public List<Property> properties;
}
@Entity
public class Property {
@Id
public Long id;
public String key;
public String value;
@ManyToOne
public Topic topic;
}
@Entity
public class CustomProperty {
@Id
public Long id;
public String key;
public String value;
@ManyToOne
public Topic topic;
@ManyToOne
public User user;
}
我需要返回一个JSON,其中包含用户主题列表和属性。 自定义属性必须使用相同的密钥覆盖主题属性。
例如,如果&#34; topic1&#34;具有属性&#34; keyA&#34;:&#34; valueA&#34;,&#34; keyB&#34;:&#34; valueB&#34;和&#34; keyC&#34;:&#34; valueC&#34;和用户&#34;约翰&#34;拥有自定义属性&#34; keyB&#34;:&#34; customValue&#34; for&#34; topic1&#34;结果应该是:
[
{
"name": "topic1",
"keyA": "valueA",
"keyB": "customValue",
"keyC": "valueC"
}
]
一切正常,问题是效果。我生成JSON的方式是:
您认为有更好的方法吗?也许改变数据库设计?
欢迎提出任何建议。
谢谢。
答案 0 :(得分:1)
您当前的工作流程对于关系数据库
是正确的如果您希望提高锁定和连接的性能,可以尝试一些图形数据库,如neo4j和spring-data-neo4j
另外,有一篇有趣的文章可以阅读关于orm - solving orm complexity
的文章