Melhor prática

Olá Pessoal,

Vi vários exemplos de camada de persistência com várias tecnologias …só que exemplos simples usando somente uma Entidade. Qual seria a melhor pratica para a seguinte situação:
Tenho um tabela que seria um “controle” onde persiste ids(fk) de outras tabelas.

CTLTAB
idCTLTAB(pk)
idTab1
idTab2

TAB1
idTab1
description

TAB2
idTab2
description

Na minha aplicaçao, gostaria de trazer em um grid com todas registros da tabela CTLTAB para edicao, inclusao, exclusao … só que, trazer o campo ‘description’ da tabela referente ao id… e quando gravar pegar o id refrente ao description e gravar na tabela CTLTAB.

Não sei se é boa prática … estava usando DAO, e no meu select trazia o description referente ao id usando join, e setava em uma inner class(proriedades id, description) da minha classe entidade(POJO), não sei se viajei .Queria saber se tem uma prática melhor de se implementar isso com DAO, HIBERNATE, JPA.

Obrigado