java dto对象_java – DTO模式:在两个对象之间复制属性的最佳方法

在我的应用程序架构中,我通常通过服务层将对象或对象列表从数据访问层发送到Web层,其中这些对象从

DAO对象转换为

DTO对象,反之亦然. Web层对DAO对象没有任何访问权限,DAO层不使用DTO.

为了演示,我通常将代码编写为:

@Transactional(readOnly = true)

public List getAllUserAsUserDTO() {

List userDTOs = new ArrayList();

for(User user : getAllUser()) {

userDTOs.add(constructUserDTO(user));

}

return userDTOs;

}

private UserDTO constructUserDTO(User user) {

UserDTO userDTO = new UserDTO();

userDTO.setFullName(user.getFullName());

userDTO.setId(user.getId());

userDTO.setUsername(user.getUsername());

userDTO.setRole(user.getRole());

userDTO.setActive(user.isActive());

userDTO.setActiveText(user.isActive() ? "Active" : "Inactive");

return userDTO;

}

这里用户是数据库实体:

@javax.persistence.Entity

@Table(name = "USER")

public class User extends Entity {

@Transient

private static final long serialVersionUID = -112950002831333869L;

private String username;

private String fullName;

private boolean active;

private String role;

// other fields

public User() {

super();

}

@NaturalId

@Column(name = "USERNAME", nullable = false)

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

@Column(name = "FULL_NAME")

public String getFullName() {

return fullName;

}

public void setFullName(String fullName) {

this.fullName = fullName;

}

@Column(name = "ACTIVE", nullable = false)

public boolean isActive() {

return active;

}

public void setActive(boolean active) {

this.active = active;

}

@Column(name = "ROLE")

public String getRole() {

return role;

}

public void setRole(String role) {

this.role = role;

}

}

这是UserDTO:

public class UserDTO extends BaseDTO {

private static final long serialVersionUID = -3719463614753533782L;

private String username;

private String fullName;

private String role;

private String activeText;

private Boolean active;

//other properties

public UserDTO() {

super();

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getFullName() {

return fullName;

}

public void setFullName(String fullName) {

this.fullName = fullName;

}

public String getRole() {

return role;

}

public void setRole(String role) {

this.role = role;

}

public String getActiveText() {

return activeText;

}

public void setActiveText(String activeText) {

this.activeText = activeText;

}

public Boolean getActive() {

return active;

}

public void setActive(Boolean active) {

this.active = active;

}

}

所以我想知道这是否是在两个对象之间复制属性的唯一方法.我想我不确定.我也使用lambdaj,所以在这个API中是否有一个方法可以复制所有这些属性来创建其他对象的列表?

这个主题可能听起来很主观,但我真的想从专家那里了解到,在最大字段具有相同字符串的情况下,可以将对象从一种形式转换为另一种形式的方式.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值