Desenvolvimento Desktop

11 respostas
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

11 Respostas

Giulliano

…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…

ciczan

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

T

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.

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.

srolbh

Obrigado a todos pelos esclarecimentos. Estou usando o Derby.

Abraços!

srolbh

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

Kknd

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

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/).

srolbh

Kknd:
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

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/).

Ola,

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

Rodrigo_Manhaes

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
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;
	}

}
Abaixo, um método que utiliza a classe MetadataConnection listada acima para submeter uma consulta:
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);
		}
	}

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

srolbh

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

Luiz_Aguiar

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.

srolbh

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.

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

Criado 2 de fevereiro de 2007
Ultima resposta 10 de fev. de 2007
Respostas 11
Participantes 7