Has*_*kan 6 java rest dao design-patterns dto
我假设如果您使用 DTO 和 DAO,则不需要实体,至少我以这种方式看到的示例是这样。或者在这种情况下是否可以选择拥有实体?
public interface CustomerResource {
@GET
@Path("/getCustomerListByUserID/{userID}")
Response getCustomerListByUserID(@PathParam("userID") String userID);
@DELETE
@Path("/deleteCustomer/{customerID}")
Response deleteCustomer(@PathParam("customerID") int customerID);
@POST
@Path("/updateCustomer")
Response updateCustomer(CustomerDTO customer);
}
Run Code Online (Sandbox Code Playgroud)
public class CustomerResourceImpl implements CustomerResource{
@Override
public Response deleteCustomer(int customerID) {
internalService.deleteCustomer(customerID);
}
@Override
public Response getCustomerListByUserID(String userID) {
internalService.getCustomerListByUserID(customerID);
}
@Override
public Response updateCustomer(CustomerDTO customer) {
internalService.updateCustomer(customer);
}
}
public interface CustomerDAO extends BaseDAO<CustomerDTO> {
List<CustomerDTO> getCustomerListByUserID(String userID);
void deleteCustomer(Integer customerID);
void updateCustomer(CustomerDTO customer);
}
Run Code Online (Sandbox Code Playgroud)
而internalService直接调用CustomerDAO
这个结构有什么问题吗,怎样才能更好,是否需要Customer实体?
太感谢了 !祝大家成功!
在 JPA 中,实体与 DTO是可以从 DAO 或存储库返回的两种不同的投影。区别在于实体是托管的(bean),而 DTO 是非托管的(简单数据载体)。这使得实体成为数据库的直接表示,其中 DTO 只是一条消息。
请注意,现代 Java 中的“对持久层的引用”通常是通过注释来处理的。
由于人们松散且可互换地使用这些术语,因此在对话中并不总是遵循 JPA 的区别;但这是一种区分定义的明确方法。
有关的:
小智 5
DTO是数据传输对象的缩写,因此它用于在应用程序的类和模块之间传输数据。
DTO应该只包含数据、getter、setter 和构造函数的私有字段。 DTO不建议在此类中添加业务逻辑方法,但添加一些util方法是可以的。 DAO是数据访问对象的缩写,因此它应该封装用于检索、保存和更新数据存储(数据库、文件系统等)中的数据的逻辑。
以下是 DAO 和 DTO 接口的示例:
interface PersonDTO {
String getName();
void setName(String name);
//.....
}
interface PersonDAO {
PersonDTO findById(long id);
void save(PersonDTO person);
//.....
}
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
protected String name;
...getter and setter
}
Run Code Online (Sandbox Code Playgroud)
实体是轻量级持久性域对象。通常,实体代表关系数据库中的一张表,每个实体实例对应于该表中的一行。
| 归档时间: |
|
| 查看次数: |
10380 次 |
| 最近记录: |