<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Boaglio.com &#187; Oracle</title>
	<atom:link href="http://www.boaglio.com/index.php/category/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.boaglio.com</link>
	<description></description>
	<lastBuildDate>Sun, 20 Jun 2010 21:03:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>10 motivos para usar o SQuirreL SQL</title>
		<link>http://www.boaglio.com/index.php/2010/04/28/10-motivos-para-usar-o-squirrel-sql/</link>
		<comments>http://www.boaglio.com/index.php/2010/04/28/10-motivos-para-usar-o-squirrel-sql/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 00:20:30 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Clube dos 10]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[banco de dados]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=441</guid>
		<description><![CDATA[Hoje em dia dá muita pena de um consultor do mercado que não conhece as ferramentas que o mercado oferece, recentemente fui entrevistado pelo projeto KDE (que eu ajudo) para falar um pouco sobre esse assunto. Com certeza quem não trabalha com banco de dados é minoria, se você como eu pertence à maioria, não [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje em dia dá muita pena de um consultor do mercado que não conhece as ferramentas que o mercado oferece, <a href="http://www.boaglio.com/go.php?http://br.kde.org/Entrevista_Fernando_Boaglio_2010" title="(37 hits)">recentemente fui entrevistado pelo projeto KDE</a> (que eu ajudo) para falar um pouco sobre esse assunto.</p>
<p>Com certeza quem não trabalha com banco de dados é minoria, se você como eu pertence à maioria,<em> não saia de casa sem o esquilo</em>! </p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/i-dont-take-peanuts.jpg" title="(799 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/i-dont-take-peanuts-300x199.jpg" alt="" title="esquilo" width="300" height="199" class="aligncenter size-medium wp-image-442" /></a><br />
<script type="text/javascript">google_ad_client = "pub-3816383189082763";google_ad_slot = "0931072200";google_ad_width = 468;google_ad_height = 60;</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></p>
<p>Desenvolvido desde 2001 o <strong>SQuirreL SQL</strong> é a melhor ferramenta que você pode usar no seu trabalho, necessitando de poucos ajustes para funcionar pra valer.<br />
Comece fazendo o <a href="http://www.boaglio.com/go.php?http://www.squirrelsql.org/" title="(325 hits)">download do JAR no site oficial</a> (não baixe o ZIP, que contém menos recursos), e continue lendo!</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel1.png" title="(885 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel1-246x300.png" alt="" title="SQL SQuirreL 3.1.1" width="246" height="300" class="aligncenter size-medium wp-image-448" /></a></p>
<p>Separei as principais vantagens sobre ele:</p>
<ol>
<li><strong>É open source</strong> &#8211; além de gratuito, o código fonte é totalmente aberto, o que facilita o seu crescimen,, to com a ajuda da comunidade criando novas melhorias e estendendo suas funcionalidades com plugins.</li>
<li><strong>É multiplataforma</strong> &#8211; como ele é feito em Java, roda praticamente em qualquer plataforma existente.</li>
<li><strong>Suporta mais de 20 bancos de dados</strong> &#8211; usando um driver JDBC ele suporta diversos bancos, entre eles eu uso mais os drivers do  <a href="http://www.boaglio.com/go.php?http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html" title="(178 hits)">Oracle</a>, <a href="http://www.boaglio.com/go.php?http://dev.mysql.com/downloads/connector/j/" title="(23 hits)">MySQL</a>, <a href="http://www.boaglio.com/go.php?http://jdbc.postgresql.org/download.html" title="(18 hits)">PostgreSQL</a>, <a href="http://www.boaglio.com/go.php?http://www.ibm.com/db2/express/" title="(10 hits)">DB2</a> e <a href="http://www.boaglio.com/go.php?http://sourceforge.net/projects/jtds/files/" title="(15 hits)">SQL Server</a>
<p>Clique na opção <em>Drivers</em>, depois <em>MySQL</em> e selecione a opção para <em>modificar</em> o driver.</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel3.png" title="(869 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel3-300x198.png" alt="" title="Configurando JDBC" width="300" height="198" class="aligncenter size-medium wp-image-451" /></a></p>
<p>Em seguida clique na aba <em>Extra Class Path</em>, clique em <em>Add</em> e selecione o arquivo jar do JDBC do MySQL (exemplo: <em>mysql-connector-java-5.1.5-bin.jar</em>). Depois de selecionado o arquivo, clique em <em>List Drivers </em>e selecione uma opção do combo <em>Class Name</em>. </p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel4.png" title="(860 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel4-300x253.png" alt="" title="Configurando Driver MySQL" width="300" height="253" class="aligncenter size-medium wp-image-452" /></a></p>
<p>Felizmente só precisamos criar o driver uma vez, agora vamos criar uma conexão clicando no <em>+</em> :</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel5.png" title="(769 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel5-300x278.png" alt="" title="Configurar um acesso ao  MySQL" width="300" height="278" class="aligncenter size-medium wp-image-453" /></a></p>
<p>Informe os dados do banco, e selecione a opção <em>Auto Logon</em> e clique em <em>Ok</em> para salvar. </p>
</li>
<li><strong>Tem interface em português</strong> &#8211; não é qualquer ferramenta que oferece o nosso idioma, para isso basta alterar o <em>Locale</em> nas <em>Preferências Globais</em> dentro da aba <em>Geral</em>.
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel2.png" title="(647 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel2-300x190.png" alt="" title="alterar idioma" width="300" height="190" class="aligncenter size-medium wp-image-449" /></a></p>
<p>Nem tudo está traduzido, mas já é um começo.</li>
<li><strong>Possui auto-complete de tabelas e colunas</strong> &#8211; hoje se a ferramenta não tem auto-complete, você demora para montar os seus comandos SQL no mínimo o dobro do tempo.<br />
    Vejam um exemplo listando as tabelas existentes:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel6.png" title="(584 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel6-300x182.png" alt="" title="auto-complete de tabela" width="300" height="182" class="aligncenter size-medium wp-image-454" /></a></p>
<p>    E outro sugerindo o nome das colunas de uma tabela:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel7.png" title="(541 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel7-300x204.png" alt="" title="auto-complete de coluna de tabela" width="300" height="204" class="aligncenter size-medium wp-image-455" /></a></p>
</li>
<li><strong>Facilmente altera tabelas</strong> &#8211; lembrar a sintaxe de remover ou aumentar o tamanho uma coluna nem sempre é trivial, ainda mais quando existem diferentes tipos de banco e cada um com sua sintaxe. Felizmente existe aqui o plugin chamado <strong>Refactoring</strong> que conforme o tipo de banco de dados, oferece um assistente que facilmente podemos manipular a estrutura de nossas tabelas.<br />
         No exemplo abaixo, adicionaremos uma coluna para armazenar a sigla do país da tabela <em>ESTADO</em>:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel8.png" title="(484 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel8-300x239.png" alt="" title="refactoring" width="300" height="239" class="aligncenter size-medium wp-image-457" /></a></p>
<p>       Depois é possível ver o comando SQL que o assistente gerou para alterar a tabela:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel9.png" title="(448 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel9-300x148.png" alt="" title="refactoring adicionando uma coluna" width="300" height="148" class="aligncenter size-medium wp-image-458" /></a></p>
</li>
<li><strong>Copia tabelas para diferentes bancos</strong> &#8211; com o plugin  <strong>DB Copy </strong> podemos facilmente copiar tabelas (estrutura + registros) , suas chaves primárias e estrangeiras, até se quisermos também gravar um script dessa cópia completa.
<p>        No exemplo vamos copiar duas tabelas da conexão com o <em>MySQL</em> para outra conexão com o <em>Oracle</em>.<br />
        Com as duas sessões abertas, selecionamos as tabelas que desejamos copiar e clicamos com o botão esquerdo do mouse:</p>
<p>        <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel10.png" title="(477 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel10-300x286.png" alt="" title="DB Copy " width="300" height="286" class="aligncenter size-medium wp-image-459" /></a></p>
<p>        Depois, na base do Oracle selecionamos a opção <em>Paste Table</em>:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel11.png" title="(426 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel11-300x175.png" alt="" title="DB Copy" width="300" height="175" class="aligncenter size-medium wp-image-460" /></a></p>
<p>       Durante a cópia, é exibida uma janela para acompanhar o processo:</p>
<p>       <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel12.png" title="(421 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel12-300x201.png" alt="" title="DB Copy" width="300" height="201" class="aligncenter size-medium wp-image-461" /></a></p>
</li>
<li><strong>Gerar diagrama das tabelas </strong> &#8211; exibe facilmente um diagrama de suas tabelas, basta selecionar as tabelas que precisa:
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel13.png" title="(440 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel13-292x300.png" alt="" title="diagrama" width="292" height="300" class="aligncenter size-medium wp-image-463" /></a></p>
<p>       Depois é só acessar a nova aba criada para visualizar o seu diagrama completo:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel14.png" title="(358 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel14-300x103.png" alt="" title="diagrama" width="300" height="103" class="aligncenter size-medium wp-image-464" /></a>
       </li>
<li><strong>Gera facilmente scripts SQL</strong> &#8211; gerar scripts de tabelas é algo que todo desenvolvedor precisa, e fazer isso aqui é muito fácil , conseguimos gerar scripts para a estrutura da tabela, com todos os dados da tabela, ou um simples rascunho de um INSERT.
<p>          No exemplo abaixo, vamos gerar o script da tabela ESTADO, selecionando a opção <em>Generate Table Script</em>: </p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel15.png" title="(406 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel15-300x290.png" alt="" title="scripts" width="300" height="290" class="aligncenter size-medium wp-image-465" /></a></p>
<p>          Com isso o SQL é gerado na aba conforme a imagem abaixo:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel16.png" title="(385 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel16-300x254.png" alt="" title="scripts" width="300" height="254" class="aligncenter size-medium wp-image-466" /></a></p>
<p>          Para gerar os dados dessa tabela, basta selecionar a opção <em>Generate Data Script</em>:</p>
<p>          <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel17.png" title="(413 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel17-300x288.png" alt="" title="scripts" width="300" height="288" class="aligncenter size-medium wp-image-467" /></a>
       </li>
<li><strong>Roda HQL</strong>! &#8211; o grande diferencial dessa ferramenta é para quem trabalha com <a href="http://www.boaglio.com/go.php?http://www.hibernate.org/" title="(15 hits)">Hibernate</a> poder executar seus HQL direto na ferramenta.
<p>              A configuração é um pouco complicada, vou ilustrar aqui os passos, mas se não conseguirem podem colocar as dúvidas nos comentários .</p>
<p>              Cada projeto Java terá uma configuração gravada na ferramenta, pois tanto um projeto que use JPA quanto outro que use somente Hibernate terão configurações distintas. No exemplo vamos mostrar um projeto com apenas Hibernate. </p>
<p>              Para criar uma configuração, acesse pelo menu <em>File &#8211; Global Preferences</em> as configurações globais, e a aba Hibernate. Depois informe o nome da configuração e clique onde está indicado abaixo para adicionar duas coisas: a primeira é o diretório de onde está o <em>hibernate.cfg.xml</em> ( <em>não</em> adicione o arquivo, adicione o diretório) , a segunda é adicionar todas as bibliotecas usadas no seu projeto (aquelas que estão no <em>\WEB-INF\lib\ </em>por exemplo). </p>
<p>Se você tem um projeto com <em>Hibernate</em> e <em>MySQL</em>, eu separei para<a href="/download/boaglio-dot-com-sqlsquirrel-hibernate-lib-pack.zip"> download um pacote com as bibliotecas necessárias</a>, faltando apenas o JAR com suas classes <a href="http://www.boaglio.com/go.php?http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html" title="(20 hits)">Entity</a> do Hibernate.</p>
<p>              <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel18.png" title="(439 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel18-300x190.png" alt="" title="Hibernate" width="300" height="190" class="aligncenter size-medium wp-image-468" /></a></p>
<p>              Em seguida precisamos informar de que maneira a fábrica de sessões será disponibilizada: chamando o Hibernate direto (nessa opção não funciona <em>Annotations</em>, as classes precisam estar mapeados nos arquivos .hbm), especificando o nome do persistence unit (JPA) ou mostrando a classe de sua aplicação que tem o método <em>public SessionFactoryImpl getSessionFactoryImpl()</em> .</p>
<p>              O projeto do exemplo usa  <a href="http://www.boaglio.com/go.php?http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/ch01.html" title="(19 hits)">Hibernate com Annotations</a> , portanto precisamos especificar qual classe tem o método de fábrica, que no meu caso é <em>br.org.cruzada.core.util.HibernateUtil</em>. </p>
<p>              <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel19.png" title="(439 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel19-300x190.png" alt="" title="hibernate" width="300" height="190" class="aligncenter size-medium wp-image-469" /></a></p>
<p>                Depois na aba do <em>Hibernate</em>, selecione a configuração criada e clique no ícone da tomada. Se a conexão der certo, o ícone muda e aparecem os objetos mapeados conforme imagem abaixo:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel20.png" title="(453 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel20-300x191.png" alt="" title="hibernate" width="300" height="191" class="aligncenter size-medium wp-image-470" /></a></p>
<p>                Digite o <em>HQL</em> que quiser (tem auto-complete!) e clique no botão <em>HQL to SQL</em> para gerar o SQL com os resultados:</p>
<p>                <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel21.png" title="(374 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/04/boaglio-dot-com-sql-squirrel21-300x162.png" alt="" title="hibernate" width="300" height="162" class="aligncenter size-medium wp-image-471" /></a></p>
</li>
</ol>
<p>Existem outras vantagens do <strong>SQL SQuirreL</strong>, mas essas são as minhas preferidas, <a href="http://www.boaglio.com/go.php?http://squirrel-sql.sourceforge.net/index.php?page=plugins" title="(38 hits)">tem outros plugins que não mencionei aqui, além de outros não oficiais</a>.</p>
<p><em>Uma última dica:</em> se você acessa tabelas muito grandes e gera SQLs com milhares de linhas, é interessante saber que o padrão definido nos arquivos (<em>squirrel-sql.bat</em> no Windows e <em>squirrel-sql.sh</em> no Linux) é de 256 megabytes de memória. Se desejar aumentar esse valor, é só alterar o valor padrão e reiniciar a ferramenta.</p>
<p>Boa sorte nos SQLs!</p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_441_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/441?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_441_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=441&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2010%2F04%2F28%2F10-motivos-para-usar-o-squirrel-sql%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2010/04/28/10-motivos-para-usar-o-squirrel-sql/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Descobrindo o SQL gerado pela sua aplicação</title>
		<link>http://www.boaglio.com/index.php/2009/08/06/descobrindo-o-sql-gerado-pela-sua-aplicacao/</link>
		<comments>http://www.boaglio.com/index.php/2009/08/06/descobrindo-o-sql-gerado-pela-sua-aplicacao/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 04:47:22 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=208</guid>
		<description><![CDATA[Quando trabalhamos com frameworks como Hibernate que geram o comando SQL pra gente, temos uma idéia do que ele faz. Entretanto, quando se usa muitas composições com o o FetchType EAGER, a coisa começa a complicar. Durante o desenvolvimento, temos ferramentas como o Hibernate Tools que podemos ver o SQL gerado, mas o verdadeiro problema [...]]]></description>
			<content:encoded><![CDATA[<p>Quando trabalhamos com frameworks como <em>Hibernate</em> que geram o comando SQL pra gente, temos uma idéia do que ele faz. Entretanto, quando se usa muitas composições com o o FetchType EAGER, a coisa começa a complicar. </p>
<p>Durante o desenvolvimento, temos ferramentas como o <a href="http://www.boaglio.com/go.php?https://www.hibernate.org/255.html" title="(131 hits)">Hibernate Tools</a> que podemos ver o SQL gerado, mas o verdadeiro problema é em ambiente de produção.</p>
<p><img src="https://www.hibernate.org/hib_images/tools/screen2.gif" alt="Hibernate Tools" /><br />
<script type="text/javascript">google_ad_client = "pub-3816383189082763";google_ad_slot = "0931072200";google_ad_width = 468;google_ad_height = 60;</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></p>
<p>Vamos analisar o seguinte método abaixo e seus SQLs gerados:</p>
<pre class="brush: bash;">
	public List&lt;Evento&gt; listaMeusEventos() {
		Criteria crit = this.session.createCriteria(Evento.class);
		crit.add(Restrictions.gt(&quot;data&quot;, new GregorianCalendar()));
		crit.addOrder(Order.asc(&quot;data&quot;));
		return crit.list();
	}
 </pre>
<p>Se você usa Hibernate e <a href="http://www.boaglio.com/go.php?http://logging.apache.org/log4j/" title="(55 hits)">log4j</a>, a solução é muito fácil, basta configurar duas opções:</p>
<pre class="brush: bash;">
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
 </pre>
<p>E na configuração do hibernate.cfg.xml adicionar essas opções:</p>
<pre class="brush: bash;">
	&lt;property name=&quot;show_sql&quot;&gt;true&lt;/property&gt;
	&lt;property name=&quot;format_sql&quot;&gt;true&lt;/property&gt;
 </pre>
<p>Você terá no seu log um resultado parecido com esse:</p>
<pre class="brush: bash;">
Hibernate:                                                                                                                                                                                                                             

select                                                                                                                                                                this_.id as id5_0_,
        this_.data as data5_0_,
        this_.lugar_id as lugar6_5_0_,
        this_.nome as nome5_0_,
        this_.obs as obs5_0_,
        this_.pessoa_id as pessoa7_5_0_,
        this_.tipo as tipo5_0_
from                                                                                                                                                                 EVENTOS  this_
where                                                                                                                                                            this_.data&gt;?
order by
        this_.data asc         

2009-08-06 22:56:13,504 DEBUG hibernate.jdbc.AbstractBatcher  -&gt; preparing statement
2009-08-06 22:56:13,504 DEBUG hibernate.type.CalendarDateType  -&gt; binding '06 Agosto 2009' to parameter: 1
 </pre>
<p><img src="http://cache0.techcrunch.com/wp-content/uploads/2009/05/spy-vs-spy_tofu_prv_2.png" alt="Spy" /></p>
<p>Mas se você não usa Hibernate, uma opção bem interessante é o <a href="http://www.boaglio.com/go.php?http://www.p6spy.com" title="(83 hits)">P6Spy</a>. </p>
<p>A idéia é que sua aplicação se conecte com ele, e depois ele se conecta ao seu banco de dados. Com isso, ele tem precisamente todos os SQLs que chegam lá.</p>
<p><strong><br />
[ Sua aplicação manda um SQL ]<br />
       =><br />
[ P6Spy escreve seu SQL em um log ]<br />
       =><br />
 [ manda o SQL para o seu banco de Dados ]<br />
</strong></p>
<p>A instalação dele é bem simples, ele tem uma biblioteca e um arquivo de propriedades.</p>
<p>O seu uso é bem simples, conforme exemplificado <a href="http://www.boaglio.com/go.php?http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/" title="(72 hits)">nesse blog</a>:</p>
<p>1 &#8211; Baixe o arquivo <a href="http://www.boaglio.com/go.php?http://sourceforge.net/projects/p6spy/files/" title="(41 hits)">p6spy-install.jar</a></p>
<p>2 &#8211; Edite o arquivo de propriedades apontando para o seu banco de dados e outras opções, como o caminho do arquivo <em>spy.log</em> </p>
<p>3 &#8211; Copie o arquivo de propriedades e a biblioteca para o CLASSPATH de sua aplicação </p>
<p>Se você usar <em>Maven2</em> nos seus projetos, ao invés de copiar a biblioteca, basta adicionar a dependência:</p>
<pre class="brush: bash;">
    &lt;dependency&gt;
    	&lt;groupId&gt;p6spy&lt;/groupId&gt;
    	&lt;artifactId&gt;p6spy&lt;/artifactId&gt;
    	&lt;version&gt;1.3&lt;/version&gt;
    &lt;/dependency&gt;
</pre>
<p>4 &#8211; Faça a sua aplicação apontar para o <strong>Spy</strong>. No caso do Hibernate, mude o driver JDBC para o driver do Spy: </p>
<pre class="brush: bash;">
&lt;property name=&quot;connection.driver_class&quot;&gt;com.p6spy.engine.spy.P6SpyDriver&lt;/property&gt;
</pre>
<p>A mesma query que o Hibernate exibiu anteriormente é exibida dessa maneira:</p>
<pre class="brush: bash;">
1249687673908|-1||resultset|select this_.id as id5_0_, this_.data as data5_0_, this_.lugar_id as lugar6_5_0_, this_.nome as nome5_0_, this_.obs as obs5_0_, this_.pessoa_id as pessoa7_5_0_, this_.tipo as tipo5_0_ from EVENTOS this_ where this_.data&gt;'2009-08-07' order by this_.data asc limit 10|nome5_0_ = Retorno para consulta, obs5_0_ = 16:30h
1249687673910|0|4|rollback||
</pre>
<p>No caso de você usar o MySQL , existe <a href="http://www.boaglio.com/go.php?http://www.howtogeek.com/howto/database/monitor-all-sql-queries-in-mysql/" title="(60 hits)">uma maneira bem mais fácil e prática de monitorar os seus SQLs</a>, basta apenas acessar o arquivo de configuração do MySQL (<em>my.ini </em>em Windows / <em>my.cnf</em> em Linux) e tirar o comentário da linha:</p>
<pre class="brush: bash;">
log = /tmp/mysqld.sql
</pre>
<p>Reinicie o banco de dados e acesse o arquivo <em>mysqld.sql</em> para acompanhar os SQLs gerados.<br />
O mesmo comando anteriormente exibido no log do Spy é exibido aqui dessa maneira:</p>
<pre class="brush: bash;">
090807 20:39:20   16839 Query       SET autocommit=0
                  16839 Query       select this_.id as id5_0_, this_.data as data5_0_, this_.lugar_id as lugar6_5_0_, this_.nome as nome5_0_, this_.obs as obs5_0_, this_.pessoa_id as pessoa7_5_0_, this_.tipo as tipo5_0_ from EVENTOS this_ where this_.data&gt;'2009-08-07' order by this_.data asc limit 10
                  16839 Query       rollback
                  16839 Query       SET autocommit=1
</pre>
<p>Pronto, agora ficou mais fácil de identificar os SQLs problemáticos da aplicação.</p>
<p>Boa sorte nos seus logs! </p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_208_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/208?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_208_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=208&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2009%2F08%2F06%2Fdescobrindo-o-sql-gerado-pela-sua-aplicacao%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2009/08/06/descobrindo-o-sql-gerado-pela-sua-aplicacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Melhore o desempenho do MySQL sem a ajuda de um DBA</title>
		<link>http://www.boaglio.com/index.php/2009/05/02/melhore-o-desempenho-do-mysql-sem-a-ajuda-de-um-dba/</link>
		<comments>http://www.boaglio.com/index.php/2009/05/02/melhore-o-desempenho-do-mysql-sem-a-ajuda-de-um-dba/#comments</comments>
		<pubDate>Sat, 02 May 2009 05:21:09 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=230</guid>
		<description><![CDATA[Depois de ler tanta coisa sobre a mesma notícia, resolvi postar algo bem mais útil sobre o MySQL. Independente do que aconteça com ele, não será tão cedo que você deixará de usá-lo para a sua base local de desenvolvimento. O problema é que quando o banco de dados começa a crescer e aos poucos [...]]]></description>
			<content:encoded><![CDATA[<p>Depois de ler tanta coisa sobre <a href="http://www.boaglio.com/go.php?http://www.oracle.com/us/corporate/press/018363" title="(58 hits)">a mesma notícia</a>, resolvi postar algo bem mais <strong>útil</strong> sobre o MySQL. </p>
<p><img src="http://www.hostingbkk.com/images/mysql_logo.jpg" alt="MySQL" /><br />
<!--adsense#bannertextomeio--></p>
<p>Independente do que aconteça com ele, não será <strong>tão cedo</strong> que você deixará de usá-lo para a sua base local de desenvolvimento.</p>
<p>O problema é que quando o banco de dados começa a crescer e aos poucos ficar lento e mais lento, e como você não é DBA, não perde tempo mexendo nessas coisas e acaba convivendo com isso.</p>
<p>Baseado <a href="http://www.boaglio.com/go.php?http://ebergen.net/wordpress/2006/03/06/3-minute-mysql-tuning/" title="(87 hits)">nesse artigo</a>, vou passar aqui umas dicas rápidas que farão a diferença no uso do MySQL em sua máquina. </p>
<p>Para listar os parâmetros do seu MySQL, veja no <a href="http://www.boaglio.com/go.php?http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html" title="(90 hits)">site oficial</a> ou use alguma ferramenta.  </p>
<ol>
<li>Derrube o serviço do MySQL</li>
<li>Localize o seu arquivo <strong>my.cnf</strong> ou <strong>my.ini</strong> (em <em>/etc</em> ou <em>C:\Program Files\MySQL\MySQL Server 5.1</em> )</li>
<li>Modifique os parâmetros abaixo de [mysqld] :
<ul>
<li><strong>max_connections</strong> = 60</li>
<li><strong>max_user_connections</strong> = 60</li>
<li><strong>key_buffer_size</strong> = mude para um valor entre um terço e metade da memória RAM disponível (exemplo: 128M)</li>
</ul>
</li>
<li>Inicie o serviço do MySQL</li>
</ol>
<p>  Uma maneira mais fácil ainda é com o seu MySQL rodando, executar <a href="http://www.boaglio.com/go.php?http://www.day32.com/MySQL/tuning-primer.sh" title="(197 hits)">esse script</a> que analisará o banco de dados e exibirá os parâmetros que deverão ser alterados para uma melhor performance. </p>
<p>  Veja um exemplo de resultado parcial do script:</p>
<pre class="brush: bash;">
mysqld is alive                        

        -- MYSQL PERFORMANCE TUNING PRIMER --
             - By: Matthew Montgomery                                               

MySQL Version 5.0.76-log x86_64

Uptime = 0 days 16 hrs 36 min 48 sec
Avg. qps = 0
Total Questions = 15
Threads Connected = 1               

Warning: Server has not been running for at least 48hrs.
It may not be safe to use these recommendations
TABLE CACHE
Current table_cache value = 64 tables
You have a total of 451 tables
You have 64 open tables.
Current table_cache hit rate is 13%, while 100% of your table cache is in use
You should probably increase your table_cache

TEMP TABLES
Current max_heap_table_size = 16 M
Current tmp_table_size = 32 M
Of 125 temp tables, 11% were created on disk
Effective in-memory tmp_table_size is limited to max_heap_table_size.
Created disk tmp tables ratio seems fine

TABLE SCANS
Current read_buffer_size = 256 K
Current table scan ratio = 11 : 1
read_buffer_size seems to be fine

TABLE LOCKING
Current Lock Wait ratio = 0 : 216
Your table locking seems to be fine
</pre>
<p>Bom proveito!</p>
<p>Fernando Boaglio, para a comunidade. =)  </p>
<p><map name='google_ad_map_230_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/230?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_230_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=230&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2009%2F05%2F02%2Fmelhore-o-desempenho-do-mysql-sem-a-ajuda-de-um-dba%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2009/05/02/melhore-o-desempenho-do-mysql-sem-a-ajuda-de-um-dba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mantendo a integridade de dados com Jailer</title>
		<link>http://www.boaglio.com/index.php/2009/02/01/mantendo-a-integridade-de-dados-com-jailer/</link>
		<comments>http://www.boaglio.com/index.php/2009/02/01/mantendo-a-integridade-de-dados-com-jailer/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 02:32:02 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=192</guid>
		<description><![CDATA[Imagine a situação: você precisa copiar dados de um registro de cliente de um banco de dados de produção, mas não pode alterá-los. Até aí nenhuma novidade, mas o problema é que o cliente tem muitos outros dados relacionados: endereço, pedido, dependentes, e várias outras coisas. Nesse caso você é obrigado a vasculhar manualmente todas [...]]]></description>
			<content:encoded><![CDATA[<p><em>Imagine a situação:</em> você precisa copiar dados de um registro de cliente de um banco de dados de produção, mas não pode alterá-los. Até aí nenhuma novidade, mas o problema é que o cliente tem muitos outros dados relacionados: endereço, pedido, dependentes, e várias outras coisas. </p>
<p>Nesse caso você é obrigado a vasculhar manualmente todas as tabelas que possuam alguma dependência com o dado desse cliente&#8230; isso pode levar horas, ou até dias. </p>
<p> <img src="http://alexrocha.files.wordpress.com/2006/09/needle-hay.jpg" alt="Agulha num palheiro!" /><br />
<!--adsense#bannertextomeio--></p>
<p>O <a href="http://www.boaglio.com/go.php?http://jailer.sourceforge.net/" title="(51 hits)">Jailer</a> é uma ferramenta feita em Java que vai te ajudar nessas situações. </p>
<p>Não adianta eu traduzir, apenas exibindo algumas imagens é suficiente para uma boa idéia do que essa poderosa ferramenta pode fazer.  </p>
<p><em>Relacionamento de dependências dos dados:</em><br />
<a href="http://www.boaglio.com/go.php?http://jailer.sourceforge.net/exporting-data-Dateien/screen3.png" title="(50 hits)"><img src="http://jailer.sourceforge.net/exporting-data-Dateien/screen3.png" width="100%"  alt="jailer" /></a></p>
<p><em>Definição de relacionamentos customizados:</em><br />
<a href="http://www.boaglio.com/go.php?http://jailer.sourceforge.net/exporting-data-Dateien/screen42.png" title="(34 hits)"><img src="http://jailer.sourceforge.net/exporting-data-Dateien/screen42.png" width="80%"  alt="jailer" /></a></p>
<p><em>Visão geral dos relacionamentos:</em><br />
<a href="http://www.boaglio.com/go.php?http://jailer.sourceforge.net/exporting-data-Dateien/screen8.png" title="(46 hits)"><img src="http://jailer.sourceforge.net/exporting-data-Dateien/screen8.png"  width="85%" alt="jailer" /></a></p>
<p><em>Exportação de dados que geral o arquivo texto final em SQL:</em><br />
<a href="http://www.boaglio.com/go.php?http://jailer.sourceforge.net/exporting-data-Dateien/screen12.png" title="(55 hits)"><img src="http://jailer.sourceforge.net/exporting-data-Dateien/screen12.png"  width="90%" alt="jailer" /></a></p>
<p>Não deixem de conferir o <a href="http://www.boaglio.com/go.php?http://jailer.sourceforge.net/exporting-data.htm" title="(56 hits)">tutorial oficial do Jailer</a>.  </p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_192_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/192?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_192_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=192&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2009%2F02%2F01%2Fmantendo-a-integridade-de-dados-com-jailer%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2009/02/01/mantendo-a-integridade-de-dados-com-jailer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gerenciando ambientes de banco com o Power Architect</title>
		<link>http://www.boaglio.com/index.php/2008/12/06/gerenciando-ambientes-de-banco-com-o-power-architect/</link>
		<comments>http://www.boaglio.com/index.php/2008/12/06/gerenciando-ambientes-de-banco-com-o-power-architect/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 13:59:50 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=177</guid>
		<description><![CDATA[Recentemente li esse post no GUJ e resolvi pesquisar sobre as ferramentas sugeridas que eu não conhecia, eu precisava fazer duas coisas: gerar um modelo de parte de algumas tabelas e comparar diferentes ambientes de bancos de dados: o de desenvolvimento e o de produção. Felizmente eu achei o que procurava com a excelente ferramenta [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente li <a href="http://www.boaglio.com/go.php?http://www.guj.com.br/posts/list/108549.java" title="(70 hits)">esse post</a> no GUJ e resolvi pesquisar sobre as ferramentas sugeridas que eu não conhecia, eu precisava fazer duas coisas: gerar um modelo de parte de algumas tabelas e comparar diferentes ambientes de bancos de dados: o de desenvolvimento e o de produção.</p>
<p><img src="http://www.sqlpower.ca/images/comein.gif" alt="open source!" /></p>
<p>Felizmente eu achei o que procurava com a excelente ferramenta <a href="http://www.boaglio.com/go.php?http://code.google.com/p/power-architect/" title="(154 hits)">Power Architect</a>.  </p>
<p>O download de sua última versão pode ser feito <a href="http://www.boaglio.com/go.php?http://download.sqlpower.ca/architect/current.html" title="(220 hits)">nesse link aqui</a>.</p>
<p>Para demonstrar o potencial da ferramenta, vou demonstrar o seu uso com os bancos de dados do melhor fórum em Java existente:o <a href="http://www.boaglio.com/go.php?http://www.jforum.net" title="(56 hits)">JForum</a>, ele não só roda o <strong>GUJ</strong>, mas em diversos outros fóruns, inclusive <a href="http://www.boaglio.com/go.php?http://www.sqlpower.ca/forum/forums/list.page" title="(69 hits)">o das ferramentas do SQL Power</a>!  </p>
<p>Essa ferramenta não possui a beleza gráfica como outras ferramentas pagas, mas ela funciona muito bem e sua configuração é bem simples:</p>
<ol>
<li> Na opção <em>Connections -> Database Connection Manager</em> configure o driver JDBC de seu banco (já vem pré-configurado os drivers para HSQL, MySQL, PostgreSQL e SQL server).</li>
<li>Na opção <em>Connections -> Add Source Connection</em> e informe os dados de conexão de seu banco de dados. Essas conexões serão usadas nos seus projetos. </li>
<li> Clique com o botão direito do mouse ao lado de &#8220;<em>Project</em>&#8221; e escolha  a opção &#8220;<em>Add Source Connection</em>&#8220;, depois escolha a conexão que você criou no item anterior. Logo depois que adicionar a conexão, a ferramenta faz a engenharia reversa para catalogar as suas tabelas.</li>
<li>Navegue pelos bancos de dados e arraste as tabelas que desejar para a direita, monte o modelo de dados que quiser. É possível ainda exportar o diagrama para PDF, mas antes disso é interessante usar a opção <em>Automatic Layout</em> para melhorar o diagrama.</li>
</ol>
<p>Bom, até agora não fez mais do que muitas ferramentas gratuitas por aí, mas o que achei mais interessante é a característica de poder comparar dois bancos de dados e listar as diferenças, isso é essencial quando se trabalha com vários ambientes de banco de dados,como desenvolvimento, homologação, testes e produção.</p>
<p>No exemplo abaixo eu comparo os bancos de dados do <strong>JForum 2</strong> ( o atual ) e o <strong>3</strong> ( que está em desenvolvimento), notem que eu escolho a na primeira opção em vermelho que é o banco desatualizado, e a segunda opção o banco mais recente:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2008/12/comparingjforum2and31-boaglio-com.png" title="(51 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2008/12/comparingjforum2and31-boaglio-com-300x252.png" alt="" title="comparingjforum2and31-boaglio-com" width="300" height="252" class="aligncenter size-medium wp-image-430" /></a></p>
<p>Aqui o relatório comparativo:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2008/12/comparingjforum2and32-boaglio-com.png" title="(46 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2008/12/comparingjforum2and32-boaglio-com-300x221.png" alt="" title="comparingjforum2and32-boaglio-com" width="300" height="221" class="aligncenter size-medium wp-image-431" /></a></p>
<p>Aqui se selecionada a opção de <em>Output Format</em> para SQL, basta rodar o script gerado abaixo para atualizar a base de dados antiga:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2008/12/comparingjforum2and33-boaglio-com.png" title="(38 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2008/12/comparingjforum2and33-boaglio-com-300x252.png" alt="" title="comparingjforum2and33-boaglio-com" width="300" height="252" class="aligncenter size-medium wp-image-432" /></a></p>
<p>Se você trabalha com diferentes ambientes, essa ferramenta open source será muito útil e evitará problemas desnecessários como aquela coluna que você esqueceu de adicionar em outro ambiente e gera diversos erros estranhos&#8230;</p>
<p>Fernando Boaglio, para a comunidade. =)</p>
<p><map name='google_ad_map_177_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/177?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_177_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=177&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2008%2F12%2F06%2Fgerenciando-ambientes-de-banco-com-o-power-architect%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2008/12/06/gerenciando-ambientes-de-banco-com-o-power-architect/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
