Sugestão para salvar Objeto em Arquivo

Ola Pessoal do GUJ

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?

Obrigado
Douglas Junior

descupla a pergunta, mas porque não usa um banco de dados ao invés de ficar serializando objetos em arquivos ?

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

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 ?

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=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.

[quote=aix]

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.

Obrigado
Douglas Junior