5
respostas

Dúvida - State Pattern - Aula 5

Boa noite,

Essa na verdade é uma dúvida que eu já venho tendo, mas achei apropriado perguntar nesse momento.

A dúvida é no momento em que eu tiver que guardar o estado atual em uma base de dados que tenha uma tabela por exemplo dessa forma:

Campos id e descrição: 1 - Em Aprovação; 2 - Aprovado; 3 - Finalizado; 4 - Reprovado

1) De que forma salvo o estado atual de forma que ele se adeque a base de dados? 2) Como faço também para recuperar o estado atual de uma base de dados?

Se alguém puder me dar essa luz eu agradeço! Abraços!

5 respostas

Você pode criar um Enum desses estados. Por exemplo:

public enum EstadoPedido {
    EM_APROVACAO,
    APROVADO,
    REPROVADO,
    FINALIZADO;
}

A sequência ficaria: 0 = EM_APROVACAO, 1 = APROVADO, 2 = REPROVADO e 3 = FINALIZADO.

Ao persistir no banco de dados o pedido (que tem o atributo estado), ficaria assim a tabela:

TABELA DE PEDIDOS

Id |  Código   |    Data    | Estado
1  |   123.A   | 12/05/2007 |   3
2  |   123.B   | 12/05/2007 |   2
3  |   999.X   | 03/01/2017 |   0

Para cuidar da persistência dos dados no banco de dados você pode utilizar o framework Hibernate.

Espero ter ajudado a esclarecer um pouco as coisas.

E em que momento eu digo para a minha classe "EmAprovacao" por exemplo que ela se refere ao enum EstadoPedido.EM_APROVACAO? No new da classe? Eh isso que ainda nao pesquei. Obrigado!

Ah! Os estados já são classes! Desculpe, eu não tinha entendido. Esquece a parte dos enums...

Você já fez os cursos que abordam a persistência de dados?

Porque se você for utilizar JPA + Hibernate, o próprio framework vai cuidar de gerar a tabela no banco para você.

Ainda não fiz, mas to imaginando um cenário em que não se faça nenhum uso de framework para persistência de dados mesmo(que atualmente é o cenário mais real para mim). Obrigado!

Oi Fábio Se você precisa retorna o estado de um objeto utilize o padrão Memento.

Espero ter ajudado e bons estudos.