Atualmente estou utilizando ObjectInputStream e ObjectOutputStream para salvar e ler objetos em arquivos, mas isso me traz um certo problema as vezes.
Se eu salvo um objeto em um arquivo hoje, e futuramente eu modifico algo na classe do objeto eu não consigo ler mais este arquivo, vou dar um exemplo besta abaixo:
Tenho um Objeto que possui um atributo do tipo “Enum”, salvei este Objeto em um arquivo.
// classe do Objeto
public class Usuario implements Serializable {
private NivelDeAcesso nivelDeAcesso = NivelDeAcesso.Supervisor:
}
// classe enum
public enum NivelAcesso {
Desativado,
Supervisor,
Proponente,
Usuario
}
Alguns dias depois eu modifiquei a classe do “Enum” e coincidentemente foi removida a propriedade que era utilizada no Objeto que havia salvo no arquivo anteriormente.
// classe enum modificado
public enum NivelAcesso {
Desativado,
Gerente,
Proponente
}
Resultado, quando fui abrir este arquivo novamente me deu a seguinte exceção:
java.lang.IllegalArgumentException: No enum const class NivelAcesso.Supervisor
Tentei trabalhar com algumas APIs que salvam Objetos em arquivo XML, mas os dados ficam muito expostos e não achei legal.
Alguém tem algum sugestão ou conhece alguma API legal pra salvar Objeto em arquivo e que facilite na solução deste tipo de problema?
Eu uso banco de dados, mas em meu sistema é possível salvar os projetos em arquivo, da mesma forma que você digita uma cartinha pra namorada no Word, salva o arquivo “.DOC” e envia para ela por e-mail.
Eu uso banco de dados, mas em meu sistema é possível salvar os projetos em arquivo, da mesma forma que você digita uma cartinha pra namorada no Word, salva o arquivo “.DOC” e envia para ela por e-mail.
Obrigado
Douglas Junior[/quote]
?
E porque não salva somente os dados do objeto no arquivo ao invés de serializar o mesmo ?
O objeto é imenso, tem muitas propriedades e “subobjetos”, seja salvando somente os dados, ou salvando o objeto inteiro, pode acontecer do tipo de dados mudar e eu não conseguir importar o objeto completo depois do arquivo, eu gostaria de algo que melhorasse isso.
Por favor, leiam atentamente a minha pergunta, e se não tiverem uma sugestão legal para minha dúvida não precisa poluir o tópico.
[color=red]"Alguém tem algum sugestão ou conhece alguma API legal pra salvar Objeto em arquivo e que facilite na solução deste tipo de problema? "[/color]
[quote=douglasjunior]Pessoal
O objeto é imenso, tem muitas propriedades e “subobjetos”, seja salvando somente os dados, ou salvando o objeto inteiro, pode acontecer do tipo de dados mudar e eu não conseguir importar o objeto completo depois do arquivo, eu gostaria de algo que melhorasse isso.
Por favor, leiam atentamente a minha pergunta, e se não tiverem uma sugestão legal para minha dúvida não precisa poluir o tópico.
[color=red]"Alguém tem algum sugestão ou conhece alguma API legal pra salvar Objeto em arquivo e que facilite na solução deste tipo de problema? "[/color]
Obrigado
Douglas Junior[/quote]
Desculpe não quis poluir o tópico e sim te ajudar, mas no meu ponto de vista ao invés de criar uma solução você esta criando um problema, uma tarefa dessas não tem nada de complexo, se o Objeto tem muitos subObjetos eu faria em XML, e não vejo porque usar XML deixaria os dados espostos como você diz, poderia usar o JAXB.
Desculpe não quis poluir o tópico e sim te ajudar, mas no meu ponto de vista ao invés de criar uma solução você esta criando um problema, uma tarefa dessas não tem nada de complexo, se o Objeto tem muitos subObjetos eu faria em XML, e não vejo porque usar XML deixaria os dados espostos como você diz, poderia usar o JAXB. [/quote]
Não estou criando um problema, e criticando o fato de eu não querer usar XML e “ObjectOutputStream” sem responder minha questão inicial na minha opinião é poluir o tópico, pois meu objetivo aqui não é saber como faz, é saber com o que fazer.
XML não me serve, ja utilizei o XStream e JAXB daria na mesma. Qualquer um que abrir o arquivo XML consegue ver o conteúdo e modificar, não quero facilitar tanto assim, o sistema tem níveis de acesso ao usuário e isso deixaria os dados muito vulneráveis.
XML e “ObjectOutputStream” estão descartados, se alguem souber uma outra maneira/tecnologia, ficarei grato.