Boas práticas na exibição de listas de objetos complexos com JSF

Preciso exibir uma lista de pessoas com os campos Código, Nome, CPF/CNPJ, Nome do Município e UF.

<p:autoComplete id="pessoaAutoComplete" value="#{myBean.pessoa}" var="p"
                 itemLabel="#{p.nome}" itemValue="#{p}"
                 completeMethod="#{myBean.completePessoa}">
    <p:column styleClass="TexAlRight">
       <h:outputText value="#{p.empresa_codigo}"/>
    </p:column>
    <p:column>
       <h:outputText value="#{p.nome}"/>
    </p:column>
    <p:column styleClass="TexAlCenter">
       <h:outputText value="#{p.cnpjcpf}" />
    </p:column>
    <p:column>
       <h:outputText value="#{p.cidade_nome}" />
    </p:column>
    <p:column styleClass="TexAlCenter">
       <h:outputText value="#{p.uf_sigla}" />
    </p:column>
</p:autoComplete>

Mas em minha classe Pessoa, não possuo os campos CPF/CNPJ, Nome do Muncípio e UF.

Então criei uma classe PessoaDTO:

@Immutable
@Data
@EqualsAndHashCode(callSuper = false, of = {"id"})
public class PessoaDTO {
    private Integer id;
    private Integer empresa_codigo;
    private String cnpjcpf;
    private String nome;
    private String cidade_nome;
    private String uf_sigla;
}

Faço uma nativeQuery e utilizo ResultTransformer para carregar as informações.

Passo a ter uma lista seja em um autoComplete ou selectOneMenu do tipo PessoaDTO, mas na maioria dos lugares eu associo a seleção de um item na lista diretamente com uma propriedade do tipo Pessoa.

Qual seria uma boa prática para se resolver esta situação?

  • Ter um converter de PessoaDTO para Pessoa?
  • Não trabalhar com o DTO e utilizar alguma outra forma para exibir as informações?

Obrigado desde já.