Desenvolvimento Desktop

Ola pessoal,

estou desenvolvendo minha primeira aplicacao desktop e surgiram algumas duvidas. Meu programa tem persistencia de dados (Novo Projeto, usuarios, calculos, grupos etc). Porém, a aplicacao nao é grande e nao ha problemas com relacao a seguranca.

Eu gostaria de saber se eu devo fazer a persistencia em arquivos txt mesmo ou se devo usar um MySQL. Com relacao ao BD eu estou boiando… gostaria de saber como eu mando o banco embutido na aplicacao para o cliente pra que ele nao tenha que fazer nenhum tipo de instalacao ou configuração adicional.

Valeu

…cara não sei se isso te ajuda…mas se vc for usar o MySQL…existe um Banco de Dados público em MySQL muito usado por empresas de pequeno e médio porte…

Dessa maneira vc precisaria apenas criar a classe de conexão diretamente com esse banco…e o seu cliente só vai precisar ter acesso a internet…

desenvolvi uma aplicação…e até ia usar esse banco…mas o cliente não quer internet…aí tive q ir instalar local mesmo… :?

só vou ficar te devendo o link…mas procura q vc acha…

Uma solução relativamente facil é serializar os beans para xml.

[quote=srolbh]gostaria de saber como eu mando o banco embutido na aplicacao para o cliente pra que ele nao tenha que fazer nenhum tipo de instalacao ou configuração adicional.
[/quote]

Você pode usar o HSQLDB (http://www.hsqldb.org ) ou o Derby (http://db.apache.org/derby ; também disponível como “JavaDB” na Sun, embora tenha sido criado pela IBM).

Se for usar o Java 6.0 o JDK já vem com o Derby (versão JavaDB).

O Derby e o HSQLDB funcionam perfeitamente com Java 1.4, 5.0 e 6.0; então você só teria problemas se tivesse de fazer o banco funcionar em ambiente Microsoft JVM (Java 1.1). Mas acho que isso não é problema para você.

Eu sei que o HSQLDB tem 2 modos de operação: um deles (“stand-alone”) é semelhante ao Access (ou seja, você cria um arquivo de bancos de dados e ele é acessível apenas pela sua aplicação), e outro (“server”) permite a você acessar o banco por outras aplicações Java.
Quanto ao Derby acho que é a mesma coisa, mas para maiores detalhes confirme no site do Derby.

Obrigado a todos pelos esclarecimentos. Estou usando o Derby.

Abraços!

Estou tendo doificuldades com o Derby (nao consigo mante-lo carregado na JVM), e com isso a persistencia nao é feita. Eu sou bem novato em se tratando de Banco de Dados.

Vou testar o db4o pra ver se facilita.

Vlw

[quote=srolbh]Ola pessoal,

estou desenvolvendo minha primeira aplicacao desktop e surgiram algumas duvidas. Meu programa tem persistencia de dados (Novo Projeto, usuarios, calculos, grupos etc). Porém, a aplicacao nao é grande e nao ha problemas com relacao a seguranca.

Eu gostaria de saber se eu devo fazer a persistencia em arquivos txt mesmo ou se devo usar um MySQL. Com relacao ao BD eu estou boiando… gostaria de saber como eu mando o banco embutido na aplicacao para o cliente pra que ele nao tenha que fazer nenhum tipo de instalacao ou configuração adicional.

Valeu[/quote]

Recomendo você dar uma olhada no banco de dados OO chamado NeoDatis, ele é muito bom e a licensa é LGPL (procura lá no sourceforge ou no site dele http://odb.neodatis.org/).

[quote=Kknd][quote=srolbh]Ola pessoal,

estou desenvolvendo minha primeira aplicacao desktop e surgiram algumas duvidas. Meu programa tem persistencia de dados (Novo Projeto, usuarios, calculos, grupos etc). Porém, a aplicacao nao é grande e nao ha problemas com relacao a seguranca.

Eu gostaria de saber se eu devo fazer a persistencia em arquivos txt mesmo ou se devo usar um MySQL. Com relacao ao BD eu estou boiando… gostaria de saber como eu mando o banco embutido na aplicacao para o cliente pra que ele nao tenha que fazer nenhum tipo de instalacao ou configuração adicional.

Valeu[/quote]

Recomendo você dar uma olhada no banco de dados OO chamado NeoDatis, ele é muito bom e a licensa é LGPL (procura lá no sourceforge ou no site dele http://odb.neodatis.org/).[/quote]

Ola,

Obrigado por mais esta sugestão. Mas estou usando o db4o e recomendo também. Nota 10! :wink:

Eu uso o Apache Derby em um projeto e ele funciona muito bem.

Estou colando abaixo o fonte da classe que faz a conexão com o Derby

[code]package postgeoolap.core.metadata;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import postgeoolap.core.i18n.Local;
import postgeoolap.core.util.Utils;

public class MetadataConnection
{
private static Connection connection;

private static Log log = LogFactory.getLog(MetadataConnection.class);

/**
 * Note: does not throw an exception, freeing user classes to handle it,
 * because only once (singleton pattern) there will be a chance of exception 
 * 
 * @return a connection to metadata database
 */
public static Connection connection()
{
	if (connection == null)
	{
		try
		{
			Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); 
			String directory = 
				Utils.getPostGeoOlapDirectory() + "metadata";
			connection = DriverManager.getConnection(
				"jdbc:derby:" + directory + ";create=true", "APP", "APP");
		}
		catch (ClassNotFoundException e)
		{
			log.error(e.getMessage(), e);
			JOptionPane.showMessageDialog(null, Local.getString("error.derby_driver_not_found"));
		}
		catch (SQLException e)
		{
			log.error(e.getMessage(), e);
			JOptionPane.showMessageDialog(null, Local.getString("error.cannot_connect_metadata"));
		} 
	}
	return connection;
}

}[/code]

Abaixo, um método que utiliza a classe MetadataConnection listada acima para submeter uma consulta:

[code]
public void clearEmptyCubes() throws MetadataException
{
Connection connection = MetadataConnection.connection();

	String sql = 
		"DELETE FROM cube " +
		"  WHERE cubecode NOT IN ( " +
		"    SELECT cubecode FROM dimension)";
	
	try
	{
		Statement statement = connection.createStatement();
		statement.execute(sql);
		log.info(Local.getString("message.empty_cubes_deleted"));
	}
	catch (SQLException e)
	{
		String msg = Local.getString("error.deleting_empty_cubes");
		log.error(msg + ": " + e.getMessage());
		throw new MetadataException(msg, e);
	}
}[/code]

Você pode conseguir o fonte inteiro do projeto usando um cliente Subversion em https://postgeoolap.svn.sourceforge.net/svnroot/postgeoolap

Rodrigo , eu ate consegui fazer o Derby funcionar… mas depois que eu havia testado o Db4o. E o Native Query do Db4o é tao bom que eu descartei o Derby completamente rs…

Eu acho que BDOOs deveriam ser mais utilizados

abraços

Se seu software não for GPL vc precisa comprar o db4o para distribuí-lo com a aplicação, se for GPL não precisa, pode usar à vontade.

Se seu software não for GPL vc precisa comprar o db4o para distribuí-lo com a aplicação, se for GPL não precisa, pode usar à vontade.[/quote]

Obrigado, mas eu li a documentação :smiley: