我正在使用Rest-services和JPA编写的Java启动HTML5客户机服务器应用程序。我有一个问题如何实现服务器端。试想一下,你有对象的情况使用Java,JPA,HTML5和REST服务时客户机 - 服务器应用程序的体系结构
public class User {
private String firstName = "";
private String surName = "";
private Address address = "";
}
public class Address {
private long id = 0L;
private String sAddress ="";
}
即最终实体创建/删除/更新数据库时,同时使用REST服务和控制器。
现在我尝试从ui(使用jquery和ajax)插入一个新用户到数据库,并且我已经填充了JSON对象。但是在User-object内部有这个Address-object。有没有什么方法来实现/使用它,或者我应该创建新的pojos,只有基本类型,然后创建一个新的层,在这里我填充最终的JPA实体,如User with Address-object?我希望我的英语能够解释这个问题。
- 这是一个好主意来创建一个应用程序,其中数据(JPA实体)与Web服务层和客户端层中的对象完全相似吗?
- 任何想法如何实现?
- 它甚至有可能在休息服务中使用自己的对象类型 - HTML5(JSON)组合,或者甚至一般?
您可以使用Netbeans 7.3轻松创建这类问题/应用程序。首先创建一个带有两个表的数据库,创建一个项目并从DB生成Web服务,就是这样。现在你已经有了实体,带有门面,数据库和项目的Web服务。
我已经问过这个与之前的示例代码,但没有答案: https://stackoverflow.com/questions/14936031/mapping-and-parsing-json-objects-in-ui-and-in-java
和GOR的错误这样的:
WARNING: StandardWrapperValve[ServletAdaptor]: PWC1406: Servlet.service() for servlet ServletAdaptor threw exception
org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class entity.Address] from JSON String; no single-String constructor/factory method (through reference chain: entity.User["addressAddressId"])
at org.codehaus.jackson.map.deser.std.StdValueInstantiator._createFromStringFallbacks(StdValueInstantiator.java:379)
at org.codehaus.jackson.map.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:268)
非常感谢回答!因此,不可能在客户端中使用地址对象,如返回JSON.stringify({0});}(user.addressAddressId.address“:$('#address')。val();});你说过:“你可以在这里使用DAO对象,访问你的持久层。”这是否比改变与UI类似的DB和JPA实体更好?一个新的层,很多代码来执行和运行时间对象吃时间和内存? – Sami 2013-02-23 22:21:02
使用REST您正在返回响应,当然可以包含字符串,整数,XML文件或JSON对象。 – sschrass 2013-02-23 22:25:32
我认为你完全不知道REST背后的想法。我建议先阅读:https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm,然后决定是否要构建一个RESTful WebService。如果你喜欢REST,可以在这里简单看一下:http://www.vogella.com/articles/REST/article.html。 – sschrass 2013-02-23 22:31:09