Mostrando postagens com marcador Banco de dados. Mostrar todas as postagens
Mostrando postagens com marcador Banco de dados. Mostrar todas as postagens

quinta-feira, 15 de outubro de 2009

Reference Cards

Encontrei uma página muito boa com uma coleção de reference cards, dentre eles sobre JAVA, XML e SQL!

Eis o link: http://www.digilife.be/quickreferences/quickrefs.htm

Enjoy!

terça-feira, 15 de setembro de 2009

Clausulas SQL IN, Having, Constains e Like

Muitas pessoas não conhecem ou não fazem uso de clausulas SQL que podem realmente salvar um dia! Perguntas sobre tais clausulas também são constantemente feitas em entrevistas de empregos. Neste post pretendo mostras brevemente o IN, Having, Constains e Like.

IN
Determina se um valor especificado corresponde a qualquer valor em uma sub-consulta ou uma lista. Exemplos:
SELECT FirstName, LastName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE e.Title IN ('Design Engineer', 'Tool Designer', 'Marketing Assistant');

Exemplo utilizando o resultado de outra query:
SELECT FirstName, LastName
FROM Person.Contact AS c
JOIN HumanResources.Employee AS e
ON e.ContactID = c.ContactID
WHERE EmployeeID IN
(SELECT SalesPersonID
FROM Sales.SalesPerson
WHERE SalesQuota > 250000);

HAVING
Especifica um critério de pesquisa para um grupo ou um agregado. HAVING pode ser usado somente com a instrução SELECT. HAVING é usado normalmente em uma cláusula GROUP BY. Quando GROUP BY não é usado, HAVING se comporta como uma cláusula WHERE. Exemplo:
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID
HAVING SUM(LineTotal) > 100000.00
ORDER BY SalesOrderID ;

CONTAINS
É um predicado usado em uma cláusula WHERE para pesquisar colunas que contêm tipos de dados baseados em caracteres para obter correspondências precisas ou difusas (menos precisas) para palavras e frases únicas, a proximidade de palavras com uma determinada distância entre si ou correspondências ponderadas. Exemplo:
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice = 80.99
AND CONTAINS(Name, 'Mountain');

LIKE
Determina se uma cadeia de caracteres específica corresponde a um padrão especificado. Exemplo:
SELECT *
FROM t
WHERE col1 LIKE '% da Silva'

Enjoy!

segunda-feira, 24 de agosto de 2009

Statement Vs Prepared Statement

Essa é chavão em entrevistas:

"Qual a diferença entre Statement e Prepared Statement?"

Podemos abrir um debate sobre o tema, falando qual é melhor, qual é pior, qual é mais bonita e mais feia.... etc! Mas o entrevistador quer somente saber se você sabe alguma diferença básica, então, para isso podemos responder da seguinte forma (no meu ponto de vista):

Quando executamos um statement, seja ele prepared ou não, na primeira vez ela é compilada no banco de dados.
A diferença básica é que, a prepared statement, quando for chamada pela segunda vez, já estará compilada e preparada (como o nome diz) para ser executada, então, ganhamos algum tempo tornando as coisas um pouco mais ágeis.

Já o statement, sempre será compilado! Não importa se estivermos em um loop que vai executar um milhão de vezes o mesmo statement! :-)

Veja em detalhes dois artigos muito bons sobre o tema:
http://antoniocangiano.com/2009/09/09/improve-the-speed-and-security-of-your-sql-queries/
e
http://freedb2.com/2009/09/08/the-article-every-dba-should-forward-to-sql-developers/

É isso.

sexta-feira, 21 de agosto de 2009

quinta-feira, 20 de agosto de 2009

Hibernate: HQL x Criteria

É muito comum em entrevistas perguntarem as diferenças entre HQL e Criteria, ambos relacionados com Hibernate. Para quem não sabe, HQL quer dizer Hibernate Query Language.

O HQL é mais próximo do SQL, é mais utilizado para consultas fixas, que não tem alterações no número de parâmetros necessários.

O Criteria é mais voltado para consultas onde o número de parâmetros não é conhecido, como em listagens que contém N filtros, neste caso o Criteria é mais recomendado por montar uma instrução mais direcionada para a busca em questão, sem adicionar campos ou parâmetros desnecessários, o que acaba agilizando a consulta na base de dados.

O Criteria oferece ainda N métodos e parâmetros para realmente fazermos uma busca bem poderosa e personalizada.

Um exemplo de uso de criteria é este abaixo, onde já temos uma classe CIDADE mapeada no Hibernate:

Criteria c = getSession().createCriteria(Cidades.class); // criando o criteria para a classe cidade
c.add( Restrictions.eq("estado.uf", "SP") ); // fazendo um filtro, no caso, onde estado == SP
List cidadesDeSaoPaulo = c.list(); // retornando a listagem - Fácil né?

O mais interessante ainda é que criteria tem vários métodos que podem nos auxiliar com as querys, por exemplo, trazer ordenado por descrição:

c.addOrder( Order.asc("descricao") );

Para setar a quantidade máxima de resultados, usamos o setMaxResults:

crit.setMaxResults(15);

Referências:

Mais sobre criteria pode ser obtido aqui.
Vários exemplos de consultas podem ser obtidas aqui.
Mais sobre HQL aqui.

Enjoy!

terça-feira, 18 de agosto de 2009

DB2 pureXML: entendendo e aplicando

O Banco de Dados DB2 versão 9 para Linux, Unix e Microsoft Windows foi anunciado como revolucionário por razão da sua capacidade de trabalhar com XML nativamente. Por se tratar de um produto relativamente novo, há na literatura disponível poucos estudos que abordem de maneira objetiva e prática suas características em relação ao XML. Portanto, escrevi um artigo em conjunto com o professor Dr. Alex Poleto, da FEMA-ASSIS, que apresenta as características e funcionalidades do DB2 e demonstra o uso do mesmo em um cenário definido, com a intenção de contribuir com a comunidade acadêmica e profissional gerando um material de consulta que poderá servir de base para novos estudos.

Fiz uma apresentação de 15 minutos (que foi péssima devida ao pouco tempo) na FEMA-Assis no dia 04/10/2007 mostrando um pouco do artigo.

A apresentação e o artigo podem ser baixados nos seguintes links:

Artigo
Apresentação

Espero que aproveitem.

Por favor, podem sugerir melhorias, criticar, etc.

Enjoy!

segunda-feira, 17 de agosto de 2009

Executando uma Stored Procedure no Hibernate

Essa muita gente pergunta, como executar uma Stored Procedure no Hibernate?

Basicamente os passos são:

0- Criamos a stored procedure no banco.

1- Criamos uma mapped query, ja relacionada a classe que vai ter um método que representa o "output" da stored procedure.

3- Chamamos a mapped query jogando o resultado dela num objeto que recebe o retorno do método que criamos na classe citada acima.

Um exemplo completo pode ser visto aqui.

quinta-feira, 13 de agosto de 2009

Erro na instalação do DB2 no Linux

Muitas pessoas que vão instalar o DB2 no Linux (Ubuntu, Suse, Debian, Slackware, etc), normalmente deparan-se com uma tala cinza após executar o db2setup.

Normalmente isso ocorre pois é necessário definir uma variável de ambiente chamada AWT_TOLLKIT, então, antes de executar o setup, execute no terminal o seguinte comando:

export AWT_TOOLKIT=MToolkit

Um erro comum também é o setup não ser carregado pois a variável Display não está setada. Para setar a mesma, no terminal, execute o comando:

export DISPLAY=:0.0

Boa sorte!

quarta-feira, 12 de agosto de 2009

Diferenças entre as versões do JDBC

Como diria um grande amigo meu (José Damico), as diferenças entre as versões do JDBC podem ser definidas com uma palavra: Natividade.

Quanto mais recente a versão, mais nativa ao banco é a tecnologia empregada. Vamos definir melhor:

JDBC 1 - Tipo restrito a plataforma Windows. Esse tipo utiliza uma ODBC para se conectar com um banco de dados. Todas as chamadas ao JDBC s"ao traduzidas para chamadas IDBC (Open DataBase Connectivity).

JDBC 2 - Basicamente o driver JDBC faz chamadas a algum outro código normalmente escrito em C.

Tanto o 1 e o 2, precisam de um software extra junto a sua aplicação Java.

JDBC 3 - Converte a chamada JDBC para uma chamada de rede. Nesta tecnologia, temos um servidor provendo a conexão com o banco de dados. Todo o código é escrito em Java.

JDBC 4 - Natividade 100%, ou seja, todas as chamadas JDBC são convertidas diretamente para o protocolo de comunicação do banco de dados, ou seja, acontece um acesso direto ao DBMS.

Em condições ideias, a versão 4 é a mais rápida e fácil de se desenvolver. Também é a mais utilizada.

Informações detalhadas (em inglês) podem ser encontradas aqui.

Enjoy!

quinta-feira, 23 de julho de 2009