Lazy Initialization em DTOs

Pessoal, estou trabalhando em um projeto onde a arquitetura diz que para cada get e set dos atributos de uma DTO, eu tenho que fazer um lazy. Por exemplo…

public class PessoaDTO {
	
	private String cpf;
	private String dataDeNascimento;
	private EnderecoDTO enderecoDTO;
	private String nome;
	private String rg;
	private String sexo;
	
	public String getCpf() {
		if (this.cpf == null) {
			this.cpf = new String();
		}
		return this.cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	
	
	public String getDataDeNascimento() {
		if (this.dataDeNascimento == null) {
			this.dataDeNascimento = new String();
		}
		return this.dataDeNascimento;
	}
	public void setDataDeNascimento(String dataDeNascimento) {
		this.dataDeNascimento = dataDeNascimento;
	}
	
	
	public EnderecoDTO getEnderecoDTO() {
		if (this.enderecoDTO == null) {
			this.enderecoDTO = new EnderecoDTO();
		}
		return this.enderecoDTO;
	}
	public void setEnderecoDTO(EnderecoDTO enderecoDTO) {
		this.enderecoDTO = enderecoDTO;
	}

	
	public String getRg() {
		if (this.rg == null) {
			this.rg = new String();
		}
		return this.rg;
	}
	public void setRg(String rg) {
		this.rg = rg;
	}

	
	public String getSexo() {
		if (this.sexo == null) {
			this.sexo = new String();
		}
		return this.sexo;
	}
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	
	
	public String getNome() {
		if (this.nome == null) {
			this.nome = new String();
		}
		return this.nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	
}

Minha dúvida é a seguinte: como sempre que eu precisar usar um atributo eu entrarei em um if, qual o custo de processamento disso para a aplicação?
Imaginem uma DTO que tem outra DTO como atributo, que tem outra DTO como atributo por exemplo…

Esse objeto PessoaDTO irá trafegar por camadas físicas diferentes?

[quote=“Carneiro”]Esse objeto PessoaDTO irá trafegar por camadas físicas diferentes?[/quote]Sim.

Acho que dessa forma não é algo que ohh vai acabar com a performasse da sua aplicação…
Mas sinceramente, não acho uma boa solução, afinal, se endereço de pessoa está nulo, é porque ela não tem endereço, se vc criar um endereço em “branco”, vc vai estar vinculando um objeto endereço a pessoa sem ela realmente ter endereço, como vc vai saber se o endereço vinculado a ela está em branco ou ela não tem? Da mesma forma, se ela não tem rg, o rg dela é null e não uma String em branco. Embora para mostrar o objeto em tela é bom ser assim, mas para mexer com ele não é legal.

Outro problema vai existir se vc buscar uma pessoa no banco, jogar os dados para o DTO, essa pessoa tem endereço, vc vai precisar buscar o endereco no banco para preencher certo, se endereço tiver cidade (que é outra tabela), é mais uma busca, e assim vai…
Se vc tiver usando JPA para fazer as buscas, então o proprio framework já resolve isso para vc, buscando tudo em uma só consulta (ou realizando as consultas adicionais), caso esteja usando jdbc e fazendo as consultas usando sql e ResultSet, então teria que pesquisar e pensar em uma forma de fazer isso mais automático, produtivo e performatico, principalmente se nessa outra camada fisica vc não tiver acesso ao banco.