use*_*723 6 javascript java json normalization angularjs
我有一个Angular JS JSON客户端与JAVA/MySQL堆栈连接.由于MySQL是一个RDBMS,我的所有数据都被标准化(当然前三种形式).
我的问题可以通过以下示例来说明.
我有一个Example对象和服务器返回的User对象.
Example - [{
userId:1,
...
...
..
},
{
userId:2,
...},
{
userId:3,
...}];
User - [
{
userId - 1,
firstName - "John",
lastName - "Doe",
..
},
{
userId - 2,
firstName - "Jane",
lastName - "Doe",
..
}, {...}...
]
Run Code Online (Sandbox Code Playgroud)
当我使用Angular"example_entry in example"查看Example集合并显示Example集合元素时,我只能使用userId.但是如果我想显示firstName和lastName,我不能这样做,因为它在不同的"User"集合中.我必须编写一个帮助器Angular控制器/服务方法来从User集合中获取firstName,lastName并将其与Example集合对象绑定.
为了避免这个问题,我可以对Java Ojbects进行De-Normalize并发送出准备好使用这样的JSON.
Example - [{
userId:1,
firstName - "John",
lastName - "Doe",
...
...
..
},
{
userId - 2,
firstName - "Jane",
lastName - "Doe",
...},
{
userId:3,
...}];
Run Code Online (Sandbox Code Playgroud)
但这是好/坏/可怕吗?因为现在我的Java域对象具有firstName,LastName在示例对象和用户对象中重复.有关哪条路线更好的建议?
De-Normalize and have ready to use JSON
Keep Data Normalized to avoid duplication and write converter methods on the Client as needed
Run Code Online (Sandbox Code Playgroud)
将数据发送到UI层时,应该对数据进行非规范化.
如果您的数据位于数据库中,那么这是规范化数据的理想之地.使用一个视图来抽象该规范化并对视图进行查询.该视图允许您将表连接在一起以从数据库中获取非规范化数据.
在UI层中,您希望拥有清晰,简单的显示 - 当角度最佳时,就会显示出来.除非您在屏幕上显示非常大量的数据或通过网络发送大量数据,否则只需直接从数据库发送非规范化记录,您就会好得多.DB非常适合进行连接和其他数据查询功能 - 它是为此而构建的.Javascript 可以做到这一点,但它并不是最好用的.
这是我对此的看法。当涉及到显示\列出数据时,我并不担心域模型\类。对我来说,返回的数据应该尽可能符合 UI 显示要求。这里的目的是向用户显示数据,并且不会对此类屏幕做出太多决策。
但是,如果数据需要更改/更新,则需要更加小心发送的内容以及哪些实体参与更新。保持数据一致成为首要任务,在这种情况下,反规范化可能不适合。