Duvida DataModel

Alguém de vcs saberia me explicar a diferença entre os métodos
getRowData() e getWrappedData() do DataModel usado mto em jsf?

E ainda. Tenho o seguinte cenário:

  1. Tenho uma tabela chamada CONTARECEBER no bd. Esta tabela contém 7 campos,
    sendo que um deles é a chave primaria, outro é uma chave estrangeira, e os demais .
  2. Minha classe bean tem um atributo chamado model do tipo DataModel.
  3. Tenho um método getTodosDados() que acessa o dao e retorna um list do objeto contasReceber para popular o model
    através do ListDataModel. Tipo model = new ListDataModel(dao.getAllContasReceber()); Este método
    getAllContasReceber() faz um SELECT * FROM CONTASRECEBER, ou seja, retorna todos os dados
    de todos os campos da tabela CONTASRECEBER.
  4. Então eu coloco um DataTable na minha página web que carrego com o método getTodosDados()
    do meu bean.
  5. Feito isso para edição, ou exclusão, ou outros fins, eu tenho o seguinte método no meu bean para recuperar a linha que o usuário
    selecionou no DataTable:
public ContaReceber getContaFromEditOrDelete() {
         contaReceber = (ContaReceber) model.getRowData();
         return contaReceber;
}

Bom a pergunta é (Parece até questão de prova, hehe!):
No método que recupera a linha selecionada pelo usuário o getRowData() retorna apenas o que está no DataTable,
ou tb as chaves primária e estrangeira que fazem parte da tabela do bd, mas que eu não exibi no DataTable apresentado
pelo usuário?

Pergunto isso pq estou usando DataModel em um projeto meu, mas não encontri mta informação na web sobre DataModel.
Especialemente sobre a primeira pergunta sobre a diferença entre getRowData() e getWrappedData().

Desde já obrigado!