Java

Tecnologias Java

Introdução Ao Spring MVC

mvcNeste artigo, vou ensinar como montar o ambiente Java para Spring MVC 3.2.

Como este é um artigo básico, vamos seguir os passos desde o início.

O primeiro passo é baixar o Eclipse e o Spring Framework, entretanto existe uma opção que é baixar o Spring Tool Suite do site http://www.springsource.org. Esta versão já vem configurada para trabalhar com o framework Spring.

Tutorial em Video.

image

Uma vez que tenha entrado na página abaixo, baixe a versão que mais se enquadre com a arquitetura do seu computador (32 ou 64 bits).

image

 

Assim que o download terminar, basta instalar exatamente com um Eclipse. Rode o STS (Spring Tool Suite).

image

Assim que ele acabar de carregar, apresentará a tela de welcome abaixo:

 

SNAGHTML4d0e9cb

Neste momento, podemos fechar a tela de Welcome e iniciar o nosso projeto. Você pode clicar em Open Dashboard que terá o mesmo resultado apresentando a tela de deshboard do Spring Source.

SNAGHTML4d32c0a

Uma vez que já estamos com a IDE aberta, podemos testar um projeto MVC. Para isso, no Dashboard, clique em Spring Template Project conforme abaixo:

SNAGHTML4d6a9e6

Uma vez que o New Template Project esteja aberto, Selecione “Spring MVC Project”. Repare que será necessário fazer o download do template (caso já não tenha sido feito).

Pressione o botão next para continuar o processo de criação do projeto.

SNAGHTML4da3c06

Coloque as informações para criar o seu projeto (aqui fica a seu critério) e clique em “Finish”.

O STS irá iniciar as configurações do ambiente. Aguarde até que o Workspace esteja 100% completo.

Uma vez completo, você ficará com a seguinte extrutura de projeto:

image

Vamos rodar a aplicação criada para ver se está tudo funcionando corretamente.

Clique com o botão direito sobre o projeto, em seguida vá até “Run As” e clique em “Run On Server”.

image

Assim que tiver feito isso, abrirá a tela de “Run On Server” já com o VMware vFabric configurado. Utilizaremos este servidor mesmo, uma vez que ele é compatível com todos os grande servidores que rodam Spring.

SNAGHTML4ebb00a

Clicamos então em next para ver nosso projeto configurado.

SNAGHTML4ece270

Clicamos em “Finish” para iniciar o Deploy da aplicação para o servidor.

Caso tenha recebido o erro abaixo:

SNAGHTML4f4c2cb

Verifique as permissões na pasta do vfabric-tc-server-developer-2.8.2.RELEASE.

Caso nenhum erro tenha ocorrido, a tela da nossa “aplicação” será apresentada conforme abaixo:

image

 

Espero que tenham gostado do artigo.

Qualquer questão entre em contato.


Connection Pooling Com Tomcat + MySql

tomcatlogoRecebi um e-mail de um amigo meu perguntando se seria possível fazer com que Tomcat gerenciasse um pool de conexões do MySql. A resposta é sim, é possível!

Neste artigo vou demonstrar como fazer esta configuração para que o Tomcat gerencie as conexões do MySQL dentro de uma aplicação de exemplo.

Então vamos começar criando nossa aplicação dentro do Eclipse.

Baixe o projeto completo aqui: Login to view.

Vou criar um novo projeto do tipo “Dynamic Web Project” conforme a imagem abaixo:

SNAGHTMLc5e4d6

Criei um nome meio feio “Tomcat_MySql_Cnn_Pool”, mas você pode colocar o nome que desejar na sua aplicação.

Escolha o target runtime, nome meu caso vou usar o “Apache Tomcat v7.0”. Clique em seguida em Next e iremos para a próxima tela do wizard.

SNAGHTMLc8eb3c

Na tela acima, não fiz nenhuma alteração, mantive os valores defaults. Clicamos então em next e vamos para a próxima tela.

SNAGHTMLce6329

Nesta tela acima, também não vou alterar os valores, mas sinta-se a vontade para fazer as devidas alterações, caso ache necessário. O campo “context root” é o nome da pasta virtual que será criada no tomcat e o context directory é o nome do diretório onde estarão armazenadas as suas páginas. Preferi manter o padrão por questões de comodidade.

Um ponto importante é marcar o “Generate web.xml deployment descriptor”, para que o Eclipse crie o arquivo automaticamente.

Clicamos em Finish para terminar o Wizard e deixar o Eclipse gerar a estrutura do projeto para nós. Dependendo do seu computador, pode ser que demore um pouco.

Se o Eclipse apresentar a mensagem abaixo, diga q sim para que ele continue o processo.

SNAGHTMLd1932e

Podemos ver nosso projeto criado

SNAGHTMLd6b8e6

Vamos dar uma olhada mais a fundo na estrutura que o Eclipse criou para a gente conforme a imagem abaixo:

SNAGHTMLdb6348

Podemos ver que dentro da pasta “WebContent”, temos as pastas “META-INF” e “WEB-INF” conforme imagem detalhada abaixo:

image

Trabalharemos agora na pasta META-INF. Adicionaremos um arquivo XML com o nome de “context.xml” dentro desta pasta. Para isso siga a imagem abaixo:

SNAGHTMLe14ccc

Selecione o arquivo XML e clique em next para cair na página abaixo:

SNAGHTMLe36980

Na tela acima, selecione a pasta META-INF e digite o nome correto do arquivo (context.xml) e clique em next para ir para a próxima página.

SNAGHTMLe52771

Na tela acima clique em finish para completar o procedimento de criação do arquivo XML.

Com este arquivo criado, vamos adicionar o seguinte conteúdo:

SNAGHTMLe9e9e5

Coloquei em Highlight os itens que precisam se alterados, são eles: o nome do pool “NOME_DO_POOL”, o nome do seu banco de dados “BANCO_DE_DADOS”, o usuário do banco de dados “USUARIO” e a senha do usuário  “SENHA”.

Fiz as alterações para minha base de teste conforme abaixo e salvei o arquivo:

SNAGHTMLf0801c

Vamos agora para a próxima etapa do processo, que consiste em alterar o arquivo web.xml que se encontra no diretório “WebContent\WEB-INF”. O arquivo web.xml deverá inicialmente está bastante parecido com o seguinte:

SNAGHTMLf4719b

SNAGHTMLf7c804

O conteúdo acima em highlight deve ser adicionado ao arquivo web.xml e conforme indicado na imagem, o nome do pool de conexão deve ser alterado para o mesmo nome que se encontra no arquivo context.xml.

Este trecho XML adicionado ao arquivo web.xml indica que o pool de conexões está configurado apenas no seu aplicativo, mas que necessita ter a chamada também pela classe de conexões do seu aplicativo.

Um último ponto importante antes de iniciarmos a codificação da nossa página JSP é adicionar a biblioteca JDBC do MySQL dentro da pasta lib do Tomcat que no meu caso se encontra em:

C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.11\lib

SNAGHTML11e9bf6

Vamos agora para a parte final do artigo que é testar para ver se tudo vai funcionar corretamente. Para isso vamos criar uma página JSP (index.jsp) dentro da pasta WebContent.

SNAGHTMLfda3d2

Vamos abrir nosso arquivo criado e adicionar as seguintes linhas de código para testar a conexão:

SNAGHTML1210929

Com nosso arquivo criado, podemos fazer o deploy para o servidor e por fim testar nossa aplicação de exemplo. Se você fez tudo certinho, deverá ver a seguinte página no seu browser:

SNAGHTML124239c

Se gostou do artigo, clique em “Curtir” no início da página!

Qualquer dúvida é só entrar em contato!

Márcio Pulcinelli @ OminaVincit!


Desenvolvendo para Android (OS)

Neste artigo vou explicar como configurar um ambiente para desenvolvimento em sistema operacional Android. Explicarei com detalhes como efetuar a configuração usando Eclipse.

O primeiro passo para isso é baixar os softwares necessários: o primeiro que iremos baixar é o próprio Eclipse no site oficial http://www.eclipse.org/.

image

Assim que clicar no download Eclipse, será levado para outra tela com uma serie de possibilidades de download conforme apresentado na imagem abaixo:

image

Quando clicamos em “compare packages”, somos levados para próxima tela, onde podemos ver uma matriz comparando todas as versões do software.

image

Para esse nosso exemplo vamos baixar o Java EE, pois é uma versão bastante completa.

image

Apos selecionar o link para download, você será redirecionado para a página de download propriamente dita. No meu caso (como meu SO é 64) escolhi a versão de 64 bits (eclipse-jee-helios-SR2-win32-x86_64.zip).

image

Basta clicar no link ([Brazil] C3SL – Federal University of Parana (http)) e iniciar o download:

SNAGHTML6de512

Quando o download do .zip estiver finalizado, descompacte-o para uma pasta qualquer. No meu caso, por padronização, sempre adiciono os programas na pasta “Program Files”.

SNAGHTML708b30

Agora, vamos executar o arquivo “eclipse.exe” para ver se está funcionando corretamente. Será apresentado inicialmente a tela de splash conforme imagem abaixo.

image

Em seguida deverá aparecer a tela de Workspace conforme imagem abaixo.

SNAGHTML144858a

Assim que foi clicado o botão “OK”, o eclipse finalizará sua carga e irá inicializar o ambiente de desenvolvimento conforme imagem abaixo. Não entrarei em detalhes sobre o ambiente, pois não é escopo deste artigo.

SNAGHTML1493ae4

Pronto!! Neste ponto, já temos o Eclipse instalado e funcionando, porém ainda não temos como desenvolver para Android, pois as APIs ainda não estão instaladas.

Instalando as APIs do Android

Para instalar as APIs ou melhor dizendo, o SDK do Android, precisamos entrar no site oficial do Android e baixa-lo.

O site é o: http://developer.android.com/sdk/index.html

SNAGHTML14ee797

Vamos baixar a versão .ZIP (android-sdk_r11-windows.zip) ao invés do executável. Para isso basta clicar no link e iniciar o download.

SNAGHTML15082dc

Após baixar o arquivo, descompacte-o para uma pasta qualquer. No meu caso usarei a pasta C:\Program Files (x86)\android-sdk-windows.

SNAGHTML1528ac8

Agora já temos o SDK na nossa máquina para darmos início as configurações dentro do Eclipse. Então, vamos lá.

Vamos abrir o Eclipse para dar início.

Com o Eclipse aberto, vamos clicar no menu Help->Install New Software. A seguinte tela será aberta:

SNAGHTML1569497

Vamos clicar no botão “Add…”, conforme imagem acima. Após clicar no botão Add.. A tela abaixo aparecerá para você informar um nome e uma localização. No campo Name você pode informar qualquer coisa que desejar, no campo Location,você deve adicionar a seguinte URL (https://dl-ssl.google.com/android/eclipse/). Em seguida clique em OK.

SNAGHTML1593384

O Eclipse vai atualizar a lista de plugins e vamos selecionar o “Android Development Tools” e clicar em “Next” conforme imagem abaixo:

SNAGHTML15d6251

Assim que clicarmos em “Next”, a seguinte de tela de “Review Licences”aparecerá. Basta clicar em “I Accept the terms…” e clicar em “Finish”, que o Eclipse irá iniciar o processo de instalação dos pacotes do plugin.

SNAGHTML15f14de

SNAGHTML160e8ee

Se a tela de warning aparecer conforme abaixo, basta clicar em “OK” para continuar.

SNAGHTML1618ba2

Assim que o processo de instalação for finalizado, o Eclipse disparará a seguinte mensagem pedindo para reiniciar o IDE do Eclipse.

SNAGHTML1635a56

É altamente recomendado que você reinicie o Eclipse, caso contrário ocorrerá erros. Por isso, clique em “Restart Now”. O IDE será iniciado automaticamente. Se aparecer a mensagem solicitando o Workspace, clique em OK.

Com o ambiente novamente carregado, vemos pequenas modificações feitas conforme a tela a seguir:

SNAGHTML16610c9

Na tela acima, podemos ver o bonequinho do Android na barra de ferramentas. Este é um indicio de que o plugin foi instalado corretamente.

Vamos agora continuar com a configuração:

Vamos clicar no menu Window->Preferences para configurar o SDK do Android. A seguinte tela será apresentada.

SNAGHTML16d4ffa

Vamos adicionar o SDK Location (no meu caso C:\Program Files (x86)\android-sdk-windows) e clicar em Apply. Assim que clicar em Apply, a lista de SDK Targets será apresentada conforme imagem abaixo.

SNAGHTML170746b

Clique em “OK” para fechar a tela.

Neste ponto temos nosso ambiente quase completo, mas ainda falta baxar alguns pacotes para completar a configuração.

Vamos clicar no menu WIndow->Android SDK and AVD Manager. A seguinte tela será apresentada.

SNAGHTML175741d

Clique no item “Available Packages” conforme a imagem abaixo. Marque as opções conforme selecionado abaixo e clique em “Install Selected”.

SNAGHTML17a4e74

Após instalar os últimos pacotes, precisamos criar um “Android Virtual Device – AVD”. Para isso, vamos clicar no menu WIndow->Android SDK and AVD Manager. Clicamos em seguida no item “Virtual Devices” conforme apresentado abaixo e clicamos também no botão “New…”:

SNAGHTML17dd7fe

Assim que clicarmos no botão “New..” a seguinte tela será apresentada:

SNAGHTML181a1c2

Copie os dados como estão acima para a sua configuração e clique em “Create AVD”.

Quando você clicar em “Create AVD”, o Eclipse voltará para a tela anterior com a seguinte configuração:

SNAGHTML18432e9

Agora vamos clicar em “Start…” para testarmos o ambiente do Android. Assim que clicamos me “Start…”, a seguinte tela é carregada.

SNAGHTML1855f17

Basta clicar em Launch para iniciar o ambiente. Imagem abaixo. Aqui vale ressaltar, que dependendo da máquina, pode demorar um tempo considerável para carregar.

Tela inicial 1:

SNAGHTML189a51c

Tela inicial 2:

SNAGHTML18a0989

Tela Android Carregado:

SNAGHTML18a858b

Se você chegou nesse ponto é porque tudo foi configurado de forma correta e temos nosso ambiente Android configurado corretamente.

No próximo artigo falarei sobre como desenvolver seu primeiro programa para Android.

Espero que tenham gostado do artigo.

Márcio Pulcinelli @ OminaVincit


Validação de E-mail – Java

image

Como fazer validação de e-mail em Java.

Criei uma classe chamada EmailValidator com um método estático validar().

Esta classe tem por objetivo apresentar o conceito de expressões regulares em Java.

import java.util.regex.*;

/**
 *
 * @author marcio.pulcinelli
 */
public class EmailValidator
{

    public static boolean validar(String email)
    {
        boolean isEmailIdValid = false;
        if (email != null && email.length() > 0) {
            String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
            Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(email);
            if (matcher.matches()) {
                isEmailIdValid = true;
            }
        }
        return isEmailIdValid;
    }

}

Espero que este pequeno bloco de código possa ajudar.

Abraços!

Márcio Pulcinelli @ OminaVincit
Nos ajude a manter o site… Clique nos anúncios, não custa nada!
 







Teoria Sobre JDBC

Conexão Java com SGBD

Não faria sentido um SGBD se não existisse a conexão entre uma linguagem de programação e um banco de dados. Em Java, existe o Java Database Connectivity (JDBC).
JDBC é uma biblioteca vinculada a API da linguagem de programação Java que define como um cliente pode acessar um banco de dados. Inclusive provê métodos para consulta e atualização.
JDBC é direcionado a banco de dados relacionais.
A API JDBC já está vinculada ao JDK do Java, porém é necessário baixar as API específicas para o banco de dados que será utilizado.

São conhecidas como connectors:
O connector Oracle pode ser facilmente baixado em:
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
O connector MySql pode ser facilmente baixado em:
http://dev.mysql.com/downloads/connector/j/

O connector é a implementação das interfaces JDBC. Ela possui a extensão JAR e deve ser adicionada ao "Build Path" do projeto que a utilizará.

Java foi desenvolvida para ser uma linguagem independente de plataforma, podendo ser transferida através de uma rede e executada a partir de um navegador Internet comum, ela tornou-se uma boa opção como base para o acesso remoto a bancos de dados. Sua portabilidade permite o desenvolvimento de uma interface independente do sistema de banco de dados ou do mecanismo de conexão utilizado, podendo ser executada em uma enorme variedade de computadores. Tendo isto em vista, a Sun Microsystems desenvolveu o Java Database Connectivity (JDBC).

O JDBC é um conjunto de classes para integração da linguagem Java com bancos de dados relacionais. O JDBC é uma API que possibilita a adição de comandos SQL em uma aplicação Java, suportando a funcionalidade básica de SQL e possibilitando a integração do código Java com sistemas de banco de dados.
A especificação do JDBC foi baseada no padrão X/Open SQL Call Level Interface (CLI), deixando-o muito parecido com um driver ODBC, que também foi baseado neste padrão. A principal diferença é que o ODBC é uma implementação em linguagem C nativa, enquanto que JDBC pode ser implementado independentemente de plataforma, seguindo os ideais da linguagem Java.

A API JDBC define um conjunto de classes da linguagem Java que representam conexões à bancos de dados, consultas SQL, resultados de consultas, informações sobre bancos de dados, etc., ou seja, permite ao programador Java consultar bancos de dados e manipular os resultados das consultas. A API é implementada através de um gerenciador de drivers (uma classe da linguagem Java chamada DriverManager) que é compatível com múltiplos drivers, permitindo conexão com diferentes bancos de dados. Os drivers JDBC podem, inclusive, ser escritos em Java, o que faz com que possam ser transferidos por download como parte de uma applet, ou podem ser implementados usando métodos nativos de banco de dados específicos, servindo de interface para bibliotecas já existentes de acesso a dados.

JDBC é uma interface que foi planejada tanto para ser usada diretamente pelo programador com comandos SQL puros e oferecer meios de manipulação dos resultados, como para servir de base para interfaces de mais alto nível. Dois tipos de APIs de mais alto nível estão sendo desenvolvidas em cima de JDBC. SQL embutido em Java, onde o mapeamento é direto de bancos de dados relacionais para classes Java, para evitar a incompatibilidade dos diversos tipos de SQL implementados pela grande quantidade de produtos de banco de dados existentes, JDBC aceita (e exige o mesmo dos drivers de terceiros) o padrão ANSI SQL92, garantindo a portabilidade das aplicações. A API JDBC também pode ser implementada acima de outras APIs SQL, particularmente a ODBC. Além disso, JDBC permite que qualquer string de consulta seja passada para algum driver específico de banco de dados, propiciando à aplicação o uso de toda a funcionalidade do produto.

A grande aceitação da linguagem Java, fez necessário com que o JDBC fornecesse uma interface consistente com o estilo de programação Java, ou seja, uma interface simples e poderosa, reforçando as características das classes Java já existentes. A tipificação forte também é uma herança do estilo Java, mesmo sendo o SQL uma linguagem de tipos dinâmicos.

Arquitetura JDBC

O objetivo do JDBC é de ser uma interface independente de qualquer Sistema de Gerenciamento de Banco de dados (SGBDR), permitir um acesso genérico a banco de dados através de SQL e ter uma interface uniforme para diferentes fontes de dados. O programador deve escrever apenas uma interface para interagir com um banco de dados relacional e, utilizando o JDBC, o programa poderá acessar qualquer fonte de dados sem ter uma programação adicional para realizar esta operação, ou seja a interface de mais alto nível, a API JDBC, é utilizada pelas aplicações para utilizar a funcionalidade oferecida pelo Gerenciador JDBC. A de mais baixo nível, ou seja, os métodos disponíveis nos drivers JDBC, é a que realmente estabelece e gerencia conexões com o banco de dados (ou com a camada de drivers inferior, se for o caso), conforme mostrado na Figura abaixo:

image

A figura acima, mostra a arquitetura do JDBC. Onde a classe DriverManager é utilizada para abrir uma conexão com um banco de dados através de um driver JDBC, que precisa estar registrado antes de realizar uma conexão. Quando uma conexão é iniciada, o DriverManager escolhe um driver de uma lista de drivers disponíveis para efetuar a conexão, dependendo da URL especificada. Uma vez estabelecida a conexão com sucesso, as chamadas para consultas (Queries) e busca de resultados (fetch) serão feitas diretamente no driver JDBC.
O JDBC usa uma URL para especificar um banco de dados, na forma jdbc:<subprotocolo>:<subnome relacionado ao DBMS/Protocolo>. O subprotocolo pode ser qualquer nome reconhecido pelo banco de dados. Para um banco de dados na Internet/Intranet, o subnome pode conter o formato hostname:port. Abaixo é demonstrado um exemplo, de uma URL de um driver puro (Thin driver) para Oracle 7.x para uma conexão em uma Intranet/Internet :

jdbc:oracle:thin:@marte.discover.com.br:1526:ORCL

No exemplo, o nome do host é marte.discover.com.br, a porta é 1526 (porta do listener do servidor) e o nome da instância do banco de dados é ORCL. Os tipos de dados SQL são mapeados para tipos nativos do Java (int, boolean, etc) quando possível. Se um tipo nativo não estiver presente na linguagem Java, uma classe estará disponível para recuperar as informações daquele determinado tipo. Existe por exemplo a classe java.sql.Date, que mapea um campo do tipo data (date) do SGBDR. O JDBC também inclui suporte para Binary Large Objects (BLOb), permitindo o armazenamento e recuperação de sons, imagens, documentos ou outra informação binária em um banco de dados. Outra funcionalidade do JDBC é o suporte ao controle de processamento de transações, que pode ser utilizada para descartar um conjunto de alterações efetuadas no banco de dados.

Tipos de Drivers

Os drivers JDBC podem ser escritos totalmente em Java, podendo ser "baixados" para uma máquina cliente através de um applet ou podem ser implementados utilizando métodos nativos para se conectar a bibliotecas de acesso a dados (geralmente uma DLL no ambiente do Windows 95/NT). A JavaSoft exige que um driver suporte no mínimo a funcionalidade do padrão ANSI SQL92, para passar nos testes de compatibilidade do JDBC. Os drivers são divididos em quatro categorias:
Drivers com acesso para API nativa – Tipos de drivers que mapeam as chamadas JDBC para chamadas na API cliente para Oracle, Sybase, Informix ou outro SGBDR. Torna-se necessário o carregamento de algum código binário em cada máquina cliente.
Drivers independentes de protocolo de rede (Thin drivers) – Estes drivers são considerados os mais flexíveis, por terem um protocolo de rede independente, que pode ser traduzido para protocolos de acesso a banco de dados específicos. São os drivers ideais para Intranets. Para funcionar na Internet, estes drivers devem satisfazer as normas de segurança impostas na Web para os applets.
Drivers dependentes de protocolo de rede – As chamadas JDBC são traduzidas para os protocolos de rede específicos utilizadas pelos bancos de dados relacionais. Um exemplo é um driver JDBC para Oracle que utilize o protocolo SQL*Net.
Drivers que utilizam ODBC – Existe a ponte JDBC-ODBC para manter a compatibilidade com uma grande quantidade de banco de dados que possuem drivers ODBC, mas ainda nenhum JDBC. Na Figura abaixo, é demonstrado o modelo de utilização da ponte JDBC-ODBC.

API JDBC

Como mencionado, as classes da API JDBC são totalmente implementadas em Java e executarão em qualquer máquina que tenha o JDK instalado. Além das classes, o uso do JDBC requer um ou mais drivers JDBC, que possuem suas próprias restrições de plataforma e banco de dados. As classes que formam a API JDBC estão implementadas no pacote java.sql e são as seguintes:
DriverManager – Passa as requisições de conexão para os drivers JDBC.
DriverPropertyInfo – Uma instância de propriedades de uma conexão de um driver JDBC.
Types – Uma lista de constantes simbólicas de tipos de dados SQL Data uma extensão da classe java.util.Date mais apropriada ao tipo de dados Date do SQL.
Time – Uma extensão da classe java.util.Date mais apropriada ao tipo de dados Time do SQL
Timestamp – Uma extensão da classe java.util.Date mais apropriada ao tipo de dados Timestamp do SQL.
Numeric – Um tipo de dados numérico com maior precisão que proporciona um conjunto completo de operações aritméticas de grande precisão; esta classe é apropriada ao tipo de dados Numeric do SQL.
Driver – Classe através da qual o Driver Manager acessa os drivers JDBC Connection, efetuando uma conexão ao banco de dados; através dela, o programador manipula suas consultas e resultados
Statement – Classe que executa comandos SQL simples
PreparedStatement – Classe especializada em manipular comandos SQL com parâmetros.
CallableStatement – Classe especializada em manipular chamadas a procedimentos armazenados.
ResultSet – Classe para acessar os resultados obtidos pela execução de uma consulta SQL.
DatabaseMetaData – Classe usada para acessar uma grande variedade de informações sobre uma conexão a um banco de dados.
ResultSetMetaData – Classe usada para acessar uma grande variedade de informações sobre os atributos de um ResultSet.
Essas classes estão organizadas de acordo com a seguinte hierarquia:

Classe java.lang.Object
Interface java.sql.Connection
Interface java.sql.DatabaseMetaData
Classe java.util.Date
Classe java.sql.Date
Classe java.sql.Time
Classe java.sql.Timestamp
Interface java.sql.Driver
Classe java.sql.DriverManager
Classe java.sql.DriverPropertyInfo
Classe java.lang.Number
Classe java.sql.Numeric
Interface java.sql.ResultSet
Interface java.sql.ResultSetMetaData
Interface java.sql.Statement
Interface java.sql.PreparedStatement
Interface java.sql.CallableStatement
Classe java.lang.Throwable
Classe java.lang.Exception
Classe java.sql.SQLException
Classe java.sql.SQLWarning
Classe java.sql.DataTruncation
Classe java.sql.Types

A hierarquia de funcionamento das classes da API JDBC, não representa hierarquia de classes/subclasses, mas uma relação entre quais classes possuem métodos próprios para a obtenção de objetos de outras classes; por exemplo, para se obter um objeto da classe Connection, deve-se usar o método getConnection() da classe DriverManager.
A maior parte dos drivers de banco de dados precisam apenas fornecer uma implementação das classes abstratas da API JDBC, especificamente das classes java.sql.Connection, java.sql.Statement, java.sql.CallableStatement, java.sql.ResultSet e java.sql.PreparedStatement. Além disso, cada driver precisa ter uma classe que implemente a interface java.sql.Driver, usada pelo DriverManager quando é necessário localizar um driver para um banco de dados em particular.

Márcio Pulcinelli @ OminaVincit.