Usando XMLs como armazenamento

Pessoal, preciso de algumas dicas!

Estou montando uma aplicação Desktop que armazenará vários objetos como XML num diretório.

Pergunta #1. Neste cenário não há concorrência. Qual é um bom framework para serializar objetos como XML?

Continuando… Depois que tenho um diretório cheio de XMLs, determinado processo deve ler todos esses objetos e tratá-los. Seria um repositório que lê todos os XMLs do diretório e obtem os objetos.

Pergunta #2. Existe alguma ferramenta que poderia auxiliar nisso?

Conto com a ajuda de vocês!!! Obrigado…

(mail de um cara que está com uma grande preguiça de fazer isso na mão)

Acho que o XStream pode ajudar.

http://xstream.codehaus.org/index.html
Muito bom.

Olá Rodrigo,

Acho que vale a pena dar uma olhada no Castor, ele me quebrou um galhão em uma situação parecida com a sua.

http://www.castor.org/

A respeito de ferramentas não conheço nenhuma. :frowning:

[]s

Vc pode ter algum caso de acesso concorrente?

Como vai contornar isso? Arquivos de lock?

[quote=peczenyj]Vc pode ter algum caso de acesso concorrente?

Como vai contornar isso? Arquivos de lock?[/quote]

Não terá concorrência. A ferramenta que estou inserido me garante que só terá um acesso por vez…

O problema é o seguinte, dando um exemplo. Tenho pedidos e nota fiscais.

aplicacao/pedidos/pedido1.xml
aplicacao/pedidos/pedido2.xml
aplicacao/pedidos/pedido3.xml

aplicacao/notasfiscais/notafiscal1.xml
aplicacao/notasfiscais/notafiscal2.xml
aplicacao/notasfiscais/notafiscal3.xml

Pensando no lado dos objetos, uma nota pode estar relacionada a [0…*] pedidos. Continuo tendo entities. Tem algum framework que gerencie isso automaticamente?

[quote=rodrigoy]Pessoal, preciso de algumas dicas!

Estou montando uma aplicação Desktop que armazenará vários objetos como XML num diretório.

Pergunta #1. Neste cenário não há concorrência. Qual é um bom framework para serializar objetos como XML?

Continuando… Depois que tenho um diretório cheio de XMLs, determinado processo deve ler todos esses objetos e tratá-los. Seria um repositório que lê todos os XMLs do diretório e obtem os objetos.

Pergunta #2. Existe alguma ferramenta que poderia auxiliar nisso?

Conto com a ajuda de vocês!!! Obrigado…

(mail de um cara que está com uma grande preguiça de fazer isso na mão)[/quote]

Rodrigo,

por que você não usa o Prevayler? Ele serializa em XML, se vc configura-lo assim.

Abraço,
Luiz

Pode não ter concorrência, mas com certeza outros problemas podem surgir, que com certeza já foram resolvidos por qualquer banco de dados, se a idéia é que fique leve, pq não utilizar hsqldb ou derby ?
Eles sobem com sua aplicação e vc tem todas as facilidades de um banco de dados, será que não compensa repensar esse armazenamento ?

Digo isso, pois já tive problemas com essa história de armazenar em Xmls, sempre surgem surpresas ! :wink:

[]´s

Nesse cenário, NotaFiscal e Pedido são mais documentos do que entities propriamente dito.

É uma aplicação direcionada a documentos e não banco de dados, porém, para manusear esses documentos, queria ainda usar OO e modelar parte do domínio.

Imagine que nesse diretório que listei que tem os pedidos eu precisaria chamar pedidoRepository.getPedidosEmAberto(). Posso usar o XStream, porém, teria que implementar um repositório direcionado a FileSystem.

Não posso armazenar isso em banco de dados pois perco toda a parte de gerência de documentos que meu ambiente ECM me oferece… cada documento tem que estar no seu arquivo.

Rodrigo Yoshima

Se você precisa de um arquivo XML para cada objeto, aconselho o XStream mesmo. Dá uma olhada nisso: http://xstream.codehaus.org/persistence-tutorial.html

Decidí pelo XStream, pelo menos inicialmente!!! Realmente a ferramenta é boa!!!