Re: [PBJUG] Substituir um Enum por uma entidade de banco

9 views
Skip to first unread message

Handerson Frota

unread,
Apr 16, 2025, 8:53:26 AMApr 16
to pb...@googlegroups.com, jav...@googlegroups.com, jav...@googlegroups.com
Cara, para esse caso com o mínimo de impacto de refactoring, só penso em duas formas. As que eu considero mais interessantes são:

1. Mapa auxiliar (Map<String, TipoConfig> tipoConfigMap) 
Você mantém seu enum fixo exatamente como está hoje, mas passa a usar uma tabela no banco de dados (ex: tipo_config) para armazenar dados complementares relacionados a cada valor do enum — ou até mesmo para suportar novos valores dinâmicos, que é o seu caso.
Então você associa os valores do enum aos registros da tabela no seu Map. O sistema vai continuar utilizando o enum onde for necessário, mas consulta os metadados adicionais (descrição, status, parâmetros, etc.) a partir da tabela no banco.

2. Interface comum (TipoInterface) -  esse gosto mais
Outra opção é criar uma interface comum, que tanto o enum quanto os valores dinâmicos do banco implementem.
Isso permite que o sistema trabalhe com ambos de forma unificada, usando polimorfismo(que é lindo ;) ), sem precisar saber se está lidando com um valor fixo ou dinâmico, ou seja, sem ifs.

Não sei se te ajuda, mas sei que você deve evitar nesse caso é tentar adicionar valores dinamicamente ao enum usando reflection, isso não é uma boa prática e pode gerar diversos problemas, como comportamentos inesperados com frameworks, dificuldades na serialização etc. 

Abraços

On Fri, May 5, 2023 at 11:49 AM Joao Paulo Fernandes <jpaul...@gmail.com> wrote:
Bom dia,
pessoal me apareceu a seguinte situação arquitetural, em meu projeto tenho um Enum Tipo que vem de uma biblioteca, e aconteceu de precisar inserir novos valores para esse enum de forma dinâmica vindos do banco, qual seria uma boa opção sendo que esse Enum é utilizado em várias referências, não queria removê-lo já que significaria uma refatoração muito grande no sistema.


Obrigado.
--
João Paulo Fernandes
Tel.: 99756-3293

--
You received this message because you are subscribed to the Google Groups "PBJug" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pbjug+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pbjug/CADQvz4aiu6JGbo%3DXJWXPnBPMM_fZ28jOBSfkn7cuYS9XQtPOag%40mail.gmail.com.


--
Profiles: SlideShare LinkedIn Twitter Picasa
Gtalk:handersonbf, Skype: handersonbf
Reply all
Reply to author
Forward
0 new messages