Ramon Pereira Lopes

Sun Campus Ambassador at UFBA


Main | Next page »
Segunda-feira Jul 14, 2008

Java invocando Ruby - JSR 223

A JSR 223 define um padrão para uso de linguagens de scripts com a plataforma Java, isto é, de uma aplicação Java podemos utilizar os recursos de diversas linguagens de Script, tais como Python/Ruby/Tcl/JavaScript/etc, invocando funções, definindo classes e utilizando-as no código Java, resumindo, podemos extrair o melhor da linguagem de script escolhida e unir ao poder da plataforma Java.

A fim de utilizar a API de Scripting, faz-se necessário obter o engine apropriado, por padrão, o Java 6 tem a implementação de um engine para JavaScript denominado Mozilla Rhino. No nosso caso, iremos utilizar Ruby como linguagem de script, portanto devemos adicionar o engine ao conjunto de bibliotecas da nossa aplicação, como também o jruby. Não se preocupem, pois deixarei os arquivos disponíveis para download ao final do post.

Como citado anteriormente, o primeiro passo é baixar o engine da sua linguagem de script e demais .jar e adicioná-los ao conjunto de bibliotecas da sua aplicação. Para aqueles que não estão familiarizados com a sintaxe de Ruby, aconselho a dar uma rápida estudada de 15 minutinhos, acredite Ruby é muito fácil e intuitivo.

Nossa aplicação contém um arquivo denominado script.rb, no qual teremos a definição de funções e de uma classe que, de ambos, faremos uso na aplicação Java. Acredito que a melhor forma de aprender é na prática e explicando passo-a-passo. Vamos agora dissecar a nosso método principal da aplicação Java.

O primeiro passo para se utilizar Scripting é obter uma referência ao ScriptEngineManager, cuja função é 'fabricar' os engines, além de identificar quais estão disponíveis, para este recurso recomendo dar uma olhada no método getEngineFactories().
ScriptEngineManager manager = new ScriptEngineManager();

Uma vez com uma referência ao Manager, nós podemos obter a referência ao ScriptEngine, que será responsável pela análise de blocos, invocar funções e métodos. Reparem que ao obter tal instância, devemos passar o nome do engine requerido, para uma lista completa é interessante conferir o site oficial do projeto Scripting, no qual podemos baixar os engines.
ScriptEngine engine = manager.getEngineByName("jruby");

Com a referência ao engine, podemos invocar método Ruby simplesmente passando como argumento o nosso código. No caso exemplo abaixo, declaro uma variável e invoco o método puts do Ruby para exibir na saída padrão.
engine.eval("x = 10; puts \"Hello World! #{x}\"");

Até o momento só vimos um único exemplo em que passávamos o bloco de código em Ruby para execução, então podemos nos perguntar se será sempre dessa maneira. A resposta, obviamente é não, no seguinte trecho fazendo uma análise por inteiro de um arquivo Ruby.
engine.eval(new BufferedReader(new FileReader("./src/scripting/script.rb")));

Para de fato invocar as funções e métodos que já foram 'reconhecidas' pelo engine devemos utilizar uma interface denominada Invocable. Basicamente, tal interface nos permite invocar Funções e Método. A obtenção da referência é feita simplesmente com um simples Cast.
Invocable invoke = (Invocable) engine;

A fim de invocar uma funçao definida no nosso arquivo Ruby, utilizamos o método invokeFunction, cujo primeiro parâmetro é nome da função, enquanto o segundo é um Varargs de Object (VarArgs tema de certificação SCJP!!)
invoke.invokeFunction("soma", 1, 2);

A seguinte declaração merece uma atenção especial:
long idade = (Long) invoke.invokeMethod(p1, "idade");

Utilizamos o método invokeMethod que retorna uma referência a object, reparem que fizemos um cast para Long, por quê? A explicação vem da seguinte tabela de conversões de tipos java (à direita) para Ruby (à esquerda):
Boolean boolean, java.lang.Boolean
Fixnum byte, java.lang.Byte, short, java.lang.Short, int, java.lang.Integer
Float float, java.lang.Float, double, java.lang.Double
String char, java.lang.String
Array java.util.List
Hash java.util.Map

Alguns trechos que não foram explanados ficam como exercício.

Links:
JRuby.jar - Não pude anexar por conta do tamanho do arquivo, mas vocês podem encontrá-lo na página oficial do projeto ou na pasta do Netbeans/ruby2
JRuby-engine
Projeto Exemplo

Quinta-feira Jul 10, 2008

Descobrindo JRuby

Acredito que muitas pessoas nunca ouviram falar sobre Ruby ou Ruby on Rails, imagina JRuby. Tomando tal desconhecimento como motivação, além de meu gosto por Java e Ruby, resolvi fazer um pequeno post sobre como brincar com JRuby.
Acredito que seja desnecessário fazer um longa introdução sobre Ruby e JRuby, portanto recomendo a leitura de um pequeno post aqui

Vamos ao que interessa! Hoje, pensei em construir uma pequena aplicação que reunisse características fortes de ambas as linguagens:

Java: Construção de interfaces gráficas, utilizando o Matisse é claro!
Ruby: Manipulação de arquivos e simplicidade da sintaxe.
Nossa pequena aplicação simplesmente abrirá um arquivo texto, localizado na pasta do projeto, e exibirá o conteúdo no jTextArea da nossa aplicação Swing. Ao final do artigo, deixarei os links para download.

O primeiro passo é criar um projeto Java, em seguida elaborar um belo JPanel e um jTextArea. Nesta etapa, a parte mais complexa é criar um método que irá receber uma string e adicionará ao textArea, pois o Matisse já facilita boa parte do trabalho.

Com o JRuby nós podemos utilizar bibliotecas Java, logo temos disponíveis todo o poder do nosso bom Java. Vamos entender linha-linha nosso extenoso código (comentários em Ruby é com o caracter #):

#Diretiva abaixo nos dará acesso às bibliotecas Java, como se estivéssemos dizendo: Não vou usar apenas código Ruby!
require "java"
#RubyDesktop.jar contém nosso fragmento Swing da aplicação, logo estamos 'carregando' suas classes
require "RubyDesktop.jar"

#Mesma função do import em Java, caso contrário deveríamos sempre usar o caminho completo
import 'javax.swing.JFrame'
#A classe Painel pertence ao RubyDesktop.jar, sendo a classe que contém os widgets
import 'Painel'

#Variavel em Ruby que diferentemente de Java é dinamicamente tipada.
s = ""
#Abrimos o arquivo teste.txt para leitura
arquivo = File.open("teste.txt","r")
#Intuitivo, não? Para cada linha do arquivo, associo a variável l e concateno com a variável s. Ruby é demais!!
arquivo.each_line do |l|
s.concat(l)
end
arquivo.close

#Começamos agora de fato a brincar com JRuby
#Em Ruby instanciamos um classe da seguinte forma: NomeClasse.new
painel = Painel.new
#O nosso objeto painel e uma instancia de uma classe java, que por sua vez possui métodos. A linha abaixo acessa
#o metodo insertText(String s) da classe Painel. Fiz questao de usar _ (underline) a fim de demonstrar a conveção Ruby
#para declaração de métodos, contudo o método na classe Painel foi declarado seguindo as convenções JavaBeans Fantástico!
painel.insert_text(s)
#Aqui em diante é puramente Java!
frame = JFrame.new("Java + Ruby = JRuby")
frame.getContentPane.add(painel)
#O operador :: serve para acessarmos campos estáticos da classe
frame.setDefaultCloseOperation(javax.swing.JFrame::EXIT_ON_CLOSE)
frame.pack
frame.setSize(300,300)
frame.setVisible(true)

Acredito que podemos concluir o quão simples Ruby é e aliada aos recursos do Java... torna-se fantástico.
JRuby é apenas uma das 'linguagens' que estão sendo incorporadas ao Java tais como: Python (Jython), maiores informações aqui

Como prometido, os links para download:

Aplicação JRuby link1
Aplicação Swing link2

Até o próximo post!!

Segunda-feira Jun 16, 2008

Sun SPOT - Parte 2

No primeiro post sobre Sun SPOT vimos uma pequena aplicação que utilizava simplesmente os LEDs. Hoje pela manhã, após muitos testes e quebrar muito a cabeça, consegui fazer uma aplicação mais robusta, isto é, através do Solarium emulei um Virtual SPOT que capturará a taxa de luminosidade do ambiente e enviará para um segundo Virtual SPOT.

Para mim, a parte mais legal desta aplicaçãozinha é explorar os recursos de wireless do Sun SPOT. Só com esta aplicaçãozinha pude ir para o outro lado da rua com um SPOT enquanto o outro deixei com meu pai em frente de casa, conclusão: enquanto movia o 'Sender', meu pai visualizava a mudança dos LEDs nos 'Receiver'. Fantástico!!

Segue abaixo uma SnapShot da aplicação rodando no Solarium, reparem que por eu não ter utilizado o IEEE Address, qualquer Spot que espere por conexões na mesma port irá fazer parte do nosso sisteminha:

Deixo disponível o source da aplicação, desta vez o código está comentado.
Receiver
Sender

Até o próximo post!!

Quarta-feira Jun 11, 2008

Sun SPOT - Parte 1

No I Salvador Java Day foi anunciado que o JavaBahia possui um Sun SPOT! Confesso que achei o SPOT extremamente interessante, sendo que hoje tive a felicidade de desenvolver minha primeira aplicação utilizando os LEDs contidos no SPOT, portanto venho compartilhar com vocês um pouco da experiência que tive.

A fim de desenvolver aplicações para um Sun SPOT faz-se necessário um ambiente de desenvolvimento já configurado, como este não é o meu intuito neste post, sugiro a leitura neste link.

Após ter configurado o Netbeans 6.1 e instalado Sun SPOT SDK, vamos ao que interessa!

Passo 1 - Criando o Projeto:

1- File -> New Project
2- Java -> Sun SPOT Application

Passo 2 - Escrevendo o código

Incialmente podemos perceber que a estrutura gerada é praticamente a mesma de uma aplicação Mobile (JME). Reparemos que a nossa classe estende MIDlet, para quem já trabalhou com JME está em casa =) . Para aqueles que não estão por dentro, recomendo o curso de desenvolvimento de aplicações móveis do Projeto JEDI.
Segue abaixo o código:

Passo 3 - Comentários

Vale a pena comentar sobre alguns trechos do código. Incialmente podemos perceber que declaramos um atributo denominado ITriColorLED que é incializado através da instrução EDemoBoard.getInstance().getLEDs(). O Sun SPOT possui ao todo 8 LEDs, iniciando do 0 into até o 7, permitindo operações do tipo acender, apagar, setar cor, contudo antes de manipulá-los, devemos obter acesso através de EDemoBoard.
Uma vez com a referência para os LEDs, podemos começar a nos divertir com o nosso Sun SPOT! Para quem já está familirizado com Java, é super simples! Vide descrição abaixo:

leds[i].setOff(); - Desliga o LED indicado pela posição i
leds[i].setOn(); - Liga o LED indicado pela posição i
leds[i].setColor(LEDColor color) - Seta a cor do LED indicado pela posição i, contudo devemos utilizar a classe LEDColor, especificamente seus atributos estáticos (Blue, Orange, Red, etc..), para indicar a cor.

Passo 4 - Executando

Agora com a aplicação escrita, devemos fazer um Build. Com o jar gerado, devemos copiá-lo. Agora devemos executar o Sun SPOT Manager Tool, especificamente o Solarium que permite rodarmos nossas aplicações com um Sun SPOT virtual (percebo que tem muitas fucinolidades). Com o Solarium aberto:

1- Emulator -> New Virtual SPOT
2- Right Click no Virtual SPOT -> Specify Application Jar (Cole o caminho do nosso Jar).
3- Right Click no Virtual SPOT -> Run MIDLet -> StartApplication

Vide imagem abaixo:

Vale ressaltar que o Sun SPOT SDK vem com uma série de exemplos, como o LEDSampleCode pelo qual me baseei.
Na imagem, inseri dois Virtual SPOTs a fim de despertar a curiosidade para possíveis emulações envolvendo wireless.

Espero que este pequeno post sirva de motivação para que vocês possam descobrir o mundo do Sun SPOT. Vale ressaltar que testei a aplicação no SPOT do JavaBahia e funcionou perfeitamente, lembre-se que caso você, membro do JavaBahia, queira desenvolver algo em comunidade com SPOT do grupo entre em contato com o Serge ou comigo.

Até o próximo post!!!

Segunda-feira Jun 09, 2008

I Salvador Java Day - Pós-Evento

O I Salvador Java Day foi um sucesso! Contamos com mais de 100 inscritos não só de Salvador como também de feira de Santana, Alagoinhas e Umburama. Contamos com palestras excelentes e palestrantes de peso, em especial a palestra de Computação Invisível me chamou bastante atenção, estou até pensando em seguir o tema como TCC.

Para quem participou do laboratório de Apilcações Desktop com Netbeans 6.1, ministrado por mim, segue o link onde estão disponíveis os slides: aqui. Por sinal, aconselho a dar uma olhada nos slides dos outros laboratórios também.

Bem pessoal, fico por aqui! Guardo ótimas lembranças do evento, conheci pessoas, me diverti bastante e estou ansioso para a retomada das reuniões mensais do grupo JavaBahia.

Até o próximo Post!

Quarta-feira Jun 04, 2008

I Salvador Java Day

Acredito que não preciso nem comentar sobre a qualidade dos eventos realizados pelo JavaBahia. Minha primeira participação foi TechDays 2007 e de lá para cá, me tornei fã de carteirinha dos eventos realizados pelo JavaBahia. Teremos mais um grande evento, que por sinal terá uma grade excelente!!

Maiores informações aqui

Sexta-feira Abr 25, 2008

Certificação SCJA

Olá pessoal,

gostaria de compartilhar com vocês uma ótima experiência que tive, isto é, tirar a primeira certificação!

Bem, na quarta-feira, 23/04, após algum tempo de estudo e espera, consegui minha primeira certificação: Sun SCJA (Sun Certified Java Associate). A SCJA é considerada uma das primeiras certificações, pois não há pré-requisito, o conteúdo abordado é conhecimento geral sobre POO e UML, construção de algoritmos com Java, etc...
Estudei pelo material do JEDI, Java Tutorial e fiz os simulados disponíveis no Sun Learning Connnection, que por sinal acredito que foi o principal fator para meu score: 94%.

Eu fiquei muito feliz com o resultado, pois estava um pouco nervoso, mesmo porque fica um cara te olhando boa parte do tempo durante a prova, além da sala ser fechada... um momento único de interação entre você e o simulado. Agora, estou dando uma descansada, mas em julho espero estar apto para a próxima certificação, SCJP.

Acredito que não vou postar todos os links utilizados, mas gostaria de sugerir um único link que vale muito a pena ser lido, aqui. O Silveira é um fanático por blogs, além de ser um amigo do programa de Embaixadores Sun, por sinal ele já tirou SCJA e está rumo a SCJP.

Fico por aqui! Com toda a certeza, é excelente tirar uma certificação, além do que uma certificação proporciona um bom upgrade no currículo. Vale ressaltar os descontos para alguns vouchers Sun, isto é, pelo SAI pode-se comprar o voucher por aproximadamente R$100,00!

Fico por aqui, em breve espero retomar o mini-tutorial JPA.

Segunda-feira Abr 14, 2008

Palestra FTC & I Simpósio Java do Sertão

Olá pessoal,

depois de um fim de semana bastante agitado, venho postar as novidades!!

Na sexta-feira à noite, fiz uma apresentação na FTC, por sinal gostaria de agradecer ao Profº Aécio Jr pelo convite, sobre JavaFX e alguns programas de benefícios da Sun. Simplesmente foi fantástico. Fui super bem recepcionado, as pessoas muito agradáveis, uma infra-estrutura excelente, contando com a presença de aproximadamente 60 pessoas.

Ainda tem mais... no dia seguinte, sábado, ocorreu o grande e esperado I Simpósio Java do Sertão, sediado pela UEFS. O que posso dizer é... quem não foi simplesmente perdeu! O evento teve uma programação diversificada, contando com participações internacionais, mini-cursos, para conferir clique aqui.

No mesmo evento, tive a grande oportunidade de ministrar o laboratório de "Introdução ao Desenvolvimento de Aplicações Móveis com JavaME". Para mim, foi uma experiência maravilhosa, pois até então nunca apresentara um laboratório fora da UFBA. Enfretamos alguns probleminhas com as máquinas, contudo tudo foi resolvido graças ao esforço da galera da organização. Fico muito agradecido e gostaria de parabenizá-los pelo empenho.

Além de tudo isso, devo salientar que o evento marcou o nascimento de um novo JUG no estado da Bahia. Tenho certeza de que tal nascimento significa um fortalecimento do Java na região de Feira de Santana e vizinhas. Se o primeiro evento foi tão bom, os próximos serão mais fantásticos ainda!

Para finalizar, gostaria de deixar o link do material utilizado nas apresentações:

Tema: JavaFX Scripting
Local: FTC - Feira de Santana
Download

Tema: Programa de Benefícios para Estudantes
Local: FTC - Feira de Santana
Informações: Envie-me um e-mail

Tema: Introdução ao Desenvolvimento de Aplicações Móveis com JavaME
Evento: I Simpósio Java do Sertão
Download
Download

Qualquer dúvida, sugestão envie-me um e-mail: Ramon.Lopes at Sun.com

Segunda-feira Abr 07, 2008

Java Persistence API - Parte 2

Olá pessoal,

dando continuidade a nossa série sobre JPA, hoje vamos "dissecar" o que fizemos no último post.

JPA significa Java Persistence API, que basicamente é uma especificação para camada de persistência adicionando facilidades de mapeamento objeto relacional (ORM). O JPA define alguns elementos que vamos comentar abaixo:

1- Entity Classes

Um Entity Class representa uma tabela no banco de dados, ou seja, através desta classe, por meio de anotações, faremos o mapeamento para a tabela do banco de dados e de cada atributo para uma determinada coluna da tabela.

2- Persistent Unit

A fim de que o JPA localize o banco de dados e estabelecer as conexões JDBC, devemos criar um arquivo chamado persistence.xml no diretório META-INF. Dentro de tal arquivo é definida nossa "Persistent Unit", que define como conectar ao banco de dados (podemos trabalhar com mais de uma unidade de persistência no mesmo projeto). Como dissemos anteriormente, JPA é uma especificação para frameworks de persistência, então faz-se necessário a utilização de um provedor para o mesmo, como por exemplo TopLink Essentials, Hibernate Entity Manager, OpenJPA.

Vamos analisar a classe Rua.java explicando as principais anotações:

@Entity - Define que nossa clsse será persistente, ou seja, haverá uma correspondência desta classe com uma tabela do banco de dados

@Table(name = "rua") - Estamos definindo que esta classe persistente corresponderá à tabela denominada "rua".

@Id - Define que o atributo que está mapeado com tal anotação corresponderá à chave primária da tabela.

@Column(name = "id", nullable = false) - Define que o atributo da classe mapeado com tal anotação deve estar associado à coluna cujo nome é "id", além de definir que tal campo não pode ser nulo.

Vocês devem ter reparado que não comentei sobre as anotações @NamedQueries e @OneToMany, o motivo é que deixaremos para abordá-las nos próximos posts.

Gostaria de comentar que as Entity Classes devem disponibilizar métodos getters e setters para seus atributos, além de implementar a interface Serializable.

Acredito que estes foram os passos mais básicos a fim de se ter uma noção superfical do que é JPA. Com certeza existe muito mais coisa a ser abordada, logo vamos fazer o processo gradativamente. Para maiores informações sobre Entity Classes recomendo este link Entity Classes.

Até o próximo post pessoal!

Sexta-feira Abr 04, 2008

I Simpósio Java do Sertão

Olá pessoal,

tenho o prazer de anunciar que o grande evento I Simpósio Java do Sertão. Tenho certeza de que será grandioso, mesmo porque contará com uma excelente programação além de marcar a fundação de um novo JUG da regigão de Feira de Santana e cidades vizinhas, estado da Bahia.

O que posso dizer é: Não percam!

Maiores informações aqui

Quinta-feira Abr 03, 2008

Java Persistence API - Parte 1

Olá pessoal,

vamos começar com uma pequena série sobre JPA. Por hoje pensei em fazer uma introdução prática. Como assim?! Vou apenas mostrar, sem teoria, como construir Entidades persistentes no Netbeans.

Antes de tudo precisamos criar as tabelas do banco de dados, logo conecte-se ao banco de dados pelo Netbeans (aba Serviços) e execute o seguinte script:

create table rua(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome varchar(20)
)TYPE=InnoDB;

create table predio(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome varchar(20),
rua_id INT NOT NULL,
FOREIGN KEY (rua_id) REFERENCES rua(id) ON DELETE RESTRICT
) TYPE=InnoDB;

Já temos duas tabelas criadas, na qual definimos um relacionamento que 1 Rua tem N Prédios.

A parte mais difícil do nosso exemplo já foi concluída. É isso mesmo! Como sempre o Netbeans facilitando a vida do desenvolvedor, então vamos lá!

Inicialmente, criemos um projeto Java Application. Agora, vamos em File -> New File -> Persistence -> Entity Classes from Database. Esta opção siginifica que vamos criar as nossas classes persistentes através da tabela do banco de dados. Vamos selecionar o banco de dados do qual devemos criar as entidades, reparem que conhecimentos básicos sobre o fucionamento do módulo de gerenciamento de banco de dados através do Netbeans é fundamental, por isso que abordamos nos últimos posts tal tópico. Após selecionar o banco, automaticamente as tabelas são reconhecidas, então vamos escolher a tabela Prédio e clicar em "Add". Reparem que automaticamente a tabela Rua foi adicionada, por que será!? Dica: A tabela Rua tem qual tipo de chave? (O Netbeans é muito inteligente!), vide figura abaixo:

Clicando em Next, vamos chegar a uma tela de descrição geral do procedimento realizado até agora. Basicamente, temos a opção de modificar o nome do pacote, nome das classes persistentes, contudo o ponto que mais nos interessa é a criação da "Unidade de Persistência", entã cliquemos no botão "Create Persistent Unit". Vamos colocar seu nome como "exemplo".

Após clicar em "Create", em seguida em "Finish", verificamos a criação um pacote "META-INF", que contém o nosso arquivo de configuração persistence.xml, e um outro pacote contendo as classes referentes às entidades persistentes.

Agora dentro do método main, vamos inserir o seguinte fragmento de código:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("exemplo");
EntityManager em = emf.createEntityManager();

em.getTransaction().begin();

Rua rua = new Rua();
rua.setNome("Rio Branco");

em.persist(rua);
em.getTransaction().commit();
em.close();

emf.close();

Agora vamos executar o nosso projeto, teremos a tabela Rua populada com um único dado. A fim de checar se tudo ocorreu corretamente, vamos dar uma olhada na aba de serviços do Netbans -> Tabela "Rua", clique com botão direito e escolha "View Data".

Bem, terminamos nosso primeiro grande projeto utilizando JPA. Tem muito mais pontos a serem discutidos, sendo que desta vez tentei mostrar a utilização do JPA de forma que nos próximos posts apresentemos a teoria envolvida.

Fico por aqui pessoal!

Sábado Mar 29, 2008

Presentation Java Bahia, SDN and Netbeans 6.0 at Uneb

Hi people,

yesterday, I did a presentation at UNEB with Serge Rehem, the leader of JavaBahia. It took aproximately 3 hours and it had a attendance of 8 people. Serge Rehem introduced the local Java Users Group called JavaBahia, and I presented the SDN program and Netbeans 6.0. I should confess that I faced some troubles in using Matisse, because I've never used a notebook, so it was terrible to drag the GUIs using the notebook mouse. In the end, I gave some souvenirs to attendees.

The presentation was wonderful, I think the attendees liked it. I would like to thank the support given by Uneb in preparing the presentation, specially the Consult Jr. I'm so thankful.

I hope to see you soon!

Specially to attendees in presentation

JavaBahia
SDN Slide
Netbean Slide
Demo

Thanks!!

Terça-feira Mar 25, 2008

Netbeans & Banco de Dados - Parte 2

Olá pessoal,

depois de um tempinho de molho, vamos abordar novamente alguns recursos visuais disponibilizados pelo Netbeans para trabalhar com Banco de Dados. Para quem não acompanhou a primeira parte da série, dê uma rápida olhada aqui. Hoje vamos mostrar como executar query de forma visual, além de executar utilizando Joins.

Depois de se posicionar na perspectiva de 'Serviços' dentro no Netbeans, conecte-se ao banco de dados, clique com o botão direito em cima de 'Tables” e escolha a opção 'Create Table', como na figura abaixo:

Em seguida, execute o seguinte bloco clicando no botão indicado na figura a seguir:

CREATE TABLE pessoa(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50) NOT NULL
)TYPE=InnoDB;

CREATE TABLE viagem(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
destino VARCHAR(50) NOT NULL,
pessoa_id INT NOT NULL,
FOREIGN KEY (pessoa_id) REFERENCES pessoa(id) ON DELETE CASCADE
)TYPE=InnoDB;

Agora já temos as nossas duas tabelas prontas para serem usadas, então:

1- Vamos executar o seguinte comando clicando com o botão direito do mouse em 'Tables', em seguida escolha a opção 'Execute Command':

INSERT INTO pessoa(nome) VALUES("Fulano");

2- Vamos inserir alguns dados na tabela viagem:

INSERT INTO viagem(destino,pessoa_id) VALUES('Recife',1);
INSERT INTO viagem(destino,pessoa_id) VALUES('Maceio',1);
INSERT INTO viagem(destino,pessoa_id) VALUES('Trancoso',1);

Com a estrutura básica já criada, podemos descobrir os recursos de se construir query visualmente!
Clicando com o botão direito na tabela 'Pessoa' e escolhendo a opção 'Design Query', teremos a seguinte tela:

Intuitivamente, podemos perceber que este processo consiste em criar um 'select' de forma visual. Reparem que na tabela no container central tem várias opções para inserirmos critérios de ordenação, alias e clicando-se com o botão direito do mouse podemos inserir condição lógica!

Clique com o botão direito do mouse na linha cujo 'column' é 'nome' e selecione 'Add Query Criteria'. No campo “Comparison”, podemos selecionar o tipo do critério, como por exemplo <= , = , <>, IN, etc... Vamos escolher LIKE e no campo 'Value' coloquemos: '%ano%'. Chegamos a seguinte tela:

Para executar um join, é bastante simples. Clicando-se com o botão direito do mouse novamente no white board, escolhe-se a opção 'Add Table'. Uma caixa será aberta a fim de que seja escolhida a tabela para o join, nesse caso vamos escolher a tabela 'Viagem'.

A partir de agora é muito simples basta selecionar as colunas de cada tabela, adicionar os seus critérios de seleção e executar a sua query! Simples não?

Como sempre, o Netbeans incorpora recursos muito legais que ajudam a vida do desenvolvedor. Confesso que este recurso é muito interessante, pois livra o desenvolvedor da chata tarefa de alternar entre o seu IDE e uma outra interface para gerenciar o banco de dados. Vale ressaltar que os recursos demonstrados nestes dois posts são básicos e práticos para o desenvolvimento de aplicações web, com persistência, utilizando o Visual Web JavaServer Faces.

Fico por aqui pessoal, espero que vocês tenham gostado desta pequena introdução aos recursos de gerenciamento de banco de dados com o Netbeans.

Domingo Mar 23, 2008

Tri-Boot: Solaris, Windows e Linux

Olá pessoal,

dessa vez não vou escrever um post mas, sim, indicar um ótimo link sobre como configurar o Grub no modo tri-boot: Solaris, Windows & Ubuntu. Confesso que tive problemas com isso, pois quando instalei o Windows, Solaris (até este ponto o Grub listava Windows e Solaris), em seguida instalei o Ubuntu que sobrescreveu e perdi a opção do Solaris. Este link me caiu como uma luva!!

Tri-Boot System: Linux, Solaris and Windows:

http://weblogs.java.net/blog/lucastorri/archive/2008/03/triboot_system.html

Por sinal, o Lucas Torri é um colega embaixador de campus no Brasil!
Parabéns Lucas pelo ótimo post!

Abração galera!!
Ainda esta semana espero trazer um novo mini, micro tutorial sobre netbeans.

Terça-feira Mar 18, 2008

Presentation Netbeans Mobile Applications

Hey,

tomorrow, March 19th, I'll give a presentation about developing mobile applications using netbeans. Differently from others presentations, in this one every participants will build their own application, because I think this manner is more interesting.
The information about presentation follow below:

Subect: Developing Mobile Applications with Netbeans
Room: Lab. 154
Date: March, 19th
Time: 13p.m - 15p.m and 17p.m - 19p.m

I hope everyone attends!
I see you in the next post!!


Today's Page Hits: 7