gostaria que vcs me ajudassem a tirar a seguinte dúvida: existe alguma forma de armazenar objetos (ou seja, salvar os dados de uma aplicação) sem utilizar os Banco de Dados convencionais? Por exemplo, existe alguma forma de passar um objeto N qualquer para um objeto de outra classe “especial” X, e este objeto “especial” X armazenar o estado do objeto N sem se preocupar com a estrutura interna do mesmo, possibilitando (além da armazenagem, é claro) a consulta, remoção e atualização de objetos previamente armazenados.
estou perguntando sobre isso pq fiz um esquema que a gente passa um objeto qualquer como parametro para um metodo de uma classe que eu escrevi, e este salva o objeto num XML, ou seja, armazena o estados dos objetos, independete de que objeto seja, de forma dinâmica. Além de salvar, é possivel realizar operação básica de um SGBD, como remoção, localização e atualização de objetos.
Bom, pra concluir, eu estou pensando em tratar este assunto no meu trabalho de conclusão de curso, por isso estou reunindo material sobre este tema (qualquer referência já é bem vinda). Meu medo é que eu desenvolva uma coisa que já exista, chegando a conclusões que já estão consolidadas, tirando todo o sentido da pesquisa.
Você pode utilizar as classes ObjectOutputStream e ObjectInputStream do pacote java.io. Dê uma olhadinha na documentação da Sun que explica legal como usá-las. Com elas, você salva objetos (e depois pode lê-los) em um arquivo, em formato binário, de uma forma que só o Java consegue ler de volta. Ou seja, você só pode ler um arquivo feito pelo ObjectOutputStream com o ObjectInputStream.
Outra maneira, que eu acho mais legal, é salvar em XML. Existe uma biblioteca chamada XStream que faz isso de maneira muuuuuuuuito simples. No site deles tem um tutorial em 5 minutos que ensina você a usar essa biblioteca. Você só precisa aprender a mexer em uma classe nova (XStream :P). É bem simples mesmo. Através de reflection, o XStream pega o nome de todas as propriedades de um objeto (mesmo eles sendo privados!) e os seus valores e salva em um XML. E, claro, você também pode ler.
Por exemplo, se você tem a classe pessoa:
public class Pessoa {
private String nome;
private int idade;
public Pessoa(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
E depois fez:
Pessoa p = new Pessoa("Cristian", 18);