【发布时间】:2014-08-26 18:14:45
【问题描述】:
我对使用 JAX-RS 很陌生。我所经历的教程通过展示如何发出GET/POST/DELETE 请求使其变得非常简单。但是没有经过高级注释。现在我正在阅读 Java EE 7 Essentials 一书。我对我在这里看到的许多新注释感到困惑。我试图找到这些注释的实用性。但我不明白。我一直发现 SO 答案对于初学者来说很容易理解。
这是来自github的代码:
Employee.Java
@Entity
@Table(name = "REST_DB_ACCESS")
@NamedQueries({
@NamedQuery(name = "Employee.findAll", query = "SELECT e FROM Employee e")
})
@XmlRootElement
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(length=40)
private String name;
public Employee() { }
public Employee(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name + " " + id;
}
@Override
public boolean equals(Object obj) {
if (null == obj)
return false;
if (!(obj instanceof Employee))
return false;
Employee that = (Employee)obj;
if (that.name.equals(this.name) && that.id == this.id)
return true;
else
return false;
}
@Override
public int hashCode() {
return Objects.hash(this.id, this.name);
}
}
EmployeeResource.Java
@Path("employee")
@Stateless
public class EmployeeResource {
@PersistenceContext
EntityManager em;
@GET
@Produces("application/xml")
public Employee[] get() {
return em.createNamedQuery("Employee.findAll", Employee.class).getResultList().toArray(new Employee[0]);
}
}
MyApplication.java
@javax.ws.rs.ApplicationPath("webresources")
public class MyApplication extends Application {
}
-
EmployeeResource类有什么用?那是设计模式吗?我可以在get()方法中使用DAO 访问来做到这一点吗? -
@PersistentContext和@Stateless是什么意思?我确实在谷歌中搜索了这些注解。但我不相信我理解它 -
Application类有什么用?它总是需要吗?在我经历的教程中,没有提到Application类。同样的道理,@ApplicationPath注解是什么意思?
感谢您的宝贵时间!
【问题讨论】:
标签: rest annotations jax-rs