XStream manipular XML como base de dados

4 respostas
cleiton_herrmann

Bom, vou deixar claro o porque de eu estar querendo usar XML como banco de dados, é uma aplicação pequena d+ pra criar tabelas num BD, colocar as classes de conexao e DAO no sistema, e tbem nao quero usar db4o, pq já fiz testes de performance e a cada registro incluido, ele fica um pouco mais lerdo, e nem um simples arquivo texto como BD, queria fazer um pouco mais elegante do que isso, ou seja, com XML, pra depois esses xml serem importados no sistema maior…

Eu achei DOM muito trabalhoso se comparado com xstream na questão de gerar e ler o xml, quase me matei ontem tentando fazer o xtream alterar uma linha do xml, mas ele sempre inseria uma nova linha alterada.

andei lendo aqui http://www.guj.com.br/java/69941-parser-xml, e o Luca disse q SAX e StaX nao serve para CRUD, (deve ser por isso q nao consegui, hahaha)
mas enfim, eu fiz uma telinha CRUD usando DOM, porém eu gostaria de saber se é possível fazer isso usando XStream, devido a sua facilidade e praticidade…

alguem sabe ? tem um exemplo, tutorial, qq coisa ? eu já li vários tutos sobre XStream, mas nenhum saiu do feijão com arroz, só xstream.toXML(…), alias, useAsAttribute, nao achei nd que inserisse uma tag depois recuperasse ela, alterasse, ou excluisse ela, to tentando descobrir algo na documentação, mas estudar documentação demora um pouco…

Desde já grato t+

4 Respostas

cleiton_herrmann

só pra deixar claro, eu fiz as operaçoes CRUD com xstream, mas ele cria um arquivo.xml para cada objeto dentro de um diretório pré definido como aqui
http://www.ke-cai.net/2010/07/java-xml-persistence-with-xstream.html

eu quero saber se existe uma forma de manipular os meus objetos dentro de um unico arquivo xml

eu nao consigo ver uma vantagem ou um porque do xstream gerar um arquivo para cada objeto ao invés de simplesmente inserir um novo elemento no arquivo, alguem sabe? seria porque ler vários arquivos é mais facil e menos custoso do que ler um arquivo grande ?

ganondorfan

O XStream cria um XML por objeto, porque o objeto é o Modelo ou seja, ele deve representar uma tabela do banco de dados, no seu caso a tabela é o arquivo XML.

Não há vantagem nenhuma em agrupar todas as informações em um só XML.

O problema de usar ele como base de dados, é que em todas as operações, leitura, inserção e exclusão, ele regera todos os dados, ou seja se seu banco estiver populado com 1.000.000 de registros e você insere mais um, ele vai reinserir Milhão inteiro mais o seu registro, a mesma coisa acontece para recuperar,excluir, etc…

Sobre suas perguntas, você ja respondeu a respeito do porque separado é melhor :smiley:

E se mesmo sabendo da bomba que você está criando, você ainda quiser armazenar tudo em um XML só, basta que você use composição para montar uma Mega-Classe que abrigue todas as suas entidades(modelo) e gerar o XML a partir dela (Os objetos ficam aninhados(nested) com XStream.

Boa sorte.

cleiton_herrmann

vlw pelas dicas ganondorfan

realmente acho q nao vai funcionar, fiz um testezinho de performance agora, e dexei rodando desde as 11:15 da manha, até agora 2 horas, tava em 45% pra criar 1 milhão de objetos e salvar (cada um com seu arquivo)

sei lá, to achando q vai ser muito mais simples fazer um arquivo texto, então, ler o conteudo dele numa string, procurar o que eu quero alterar/excluir alterar e depois salvar essa string novamente, vou fazer um teste de performance agora pra isso com 1 milhão de linhas representando meus objetos

cleiton_herrmann

com arquivo texto o problema foi a leitura, além de lenta quando o arquivo é grande, é necessário ler sempre todo o arquivo, procurar o que se quer alterar ou excluir, fazer as devidas alterações na parte desejada, e então salvar novamente, mas eu acredito que deve existir uma forma de ler um arquivo mais rapido, sei lá, o meu programinha de teste ficou ± com a velocidade do bloco de notas, mas o notepad++ por exemplo, le o arquivo q criei em 1 segundo, o bloco de notas demorava sei lá quanto tempo, eu desisti de esperar, hahhaha, será q em java não tem uma forma de ler arquivos txt grandes rapidamente ? vamos esperar pelos mais experts, eu ouvi falar q java.nio da um consideravel ganho de performance, mas ainda nao tive tempo de testar

quanto ao xstream vou fazer uns testes de consulta com ele com 1 milhão de arquivos, pra ver a velocidade, a gravação fica prejudicada com tantos objetos, vamos ver a consulta

Criado 27 de janeiro de 2011
Ultima resposta 28 de jan. de 2011
Respostas 4
Participantes 2