Duvida sobre classe de negocio e JTable

Bom dia, a minha duvida é sobre as classes de negocio (acho q é assim q chama), é necessario extender uma AbstractTableModel para cada classe ???, exemplo: Cliente, Fornecedor, Funcionarios, etc…

Para estes cadastros eu inicio com uma JFrame com uma JTable e exibo alguns dados, qdo seleciono uma linha abro um JInternalFrame com todas as informações e faço a edição dos dados.

Hoje eu tenho um AbstractTableModel generica e uso ela para todos os modulos de cadastro.

Gostaria de saber se esta idéia é errada ou muito ruim e se eu criar uma AbstractTableModel para todos os cadastros e carregar uma List com todos os dados isso nao ira consumir mais memoria do que a forma que faço hoje List somente com os dados das colunas que estou exibindo ?

Vlw agradeço a todos que ajudarem

Amigo, esta é uma prática normal para se trabalhar com listas em java, porém não é aconselhado carregar todos os itens da lista de uma vez e limitar a pesquisa a uma quantidade dos últimos itens adicionados, pois cada linha representa um objeto instanciado na memória. Adicione rotinas de filtros ao seu listener para carregar mais itens do banco quando necessário.

O recomendável é que você implemente um AbstractTableModel para cada classe (Cliente, Fornecedor, Funcionarios…). A não ser que essa sua classe genérica seja dinâmica para aceitar diferentes tipos de campos, nomes e quantidades, nesse caso não teria problema nenhum, seria até melhor.

Eu particularmente faço algo genérico (abstract) e herdo (extends) detalhando melhor como funciona para cada ocasião, isso ai vai de gosto pra gosto.

Em relação ao peso em memória o que eu recomendo é que haja algum tipo de busca/filtro dos registros e para cada nova busca você reinicie a lista ou dê um clear(), assim a memória não será gasta desnecessariamente. Agora se você referenciar a lista em outro lugar ou os objetos dela em outro lugar ao dar um clear() ou new ArrayList() você não vai liberar a memória desses objetos ou parte deles.

Procure sobre como funciona Objetos em memória (pode procurar por ponteiros em C++, é bem semelhante) e Garbage Collector do Java (é o que libera a memória), você pode chamar System.gc() para tentar liberar memória, porém não chame toda hora, o processo as vezes é demorado.