1. Estrutura de diretórios (pacote persistir):

2. Pacotes no classpath (\src\lib):

3. hibernate.cfg.xml (\src):
Este arquivo é responsável por configurar o Hibernate, especificando caminho do banco, driver, usuário, senha, etc.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration Public
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<Property name="connection.driver_class">
org.firebirdsql.jdbc.FBDriver
</Property>
<Property name="connection.url">
jdbc:firebirdsql:localhost/3050:D:\\Caminho\\Do\\banco\\Banco.FBS
</Property>
<Property name="connection.username">SYSDBA</Property>
<Property name="connection.password">senha</Property>
<!-- JDBC connection pool (use the built-In) -->
<Property name="connection.pool_size">1</Property>
<!-- SQL dialect -->
<Property name="dialect">
org.hibernate.dialect.HSQLDialect
</Property>
<!-- Enable Hibernate's automatic session context management -->
<Property name="current_session_context_class">thread</Property>
<!-- Disable the second-level cache -->
<Property name="cache.provider_class">
org.hibernate.cache.NoCacheProvider
</Property>
<!-- Echo all executed SQL To stdout -->
<Property name="show_sql">True</Property>
<!-- Drop And re-create the database schema On startup -->
<mapping resource="persistir/entidades/Produto.hbm.xml" />
</session-factory>
</hibernate-configuration>
4. log4j.properties (\src):
Este arquivo configura a maneira como serão registrados os eventos do banco de dados.
### direct log messages To stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### Set log levels - For more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
### log just the SQL
log4j.logger.org.hibernate.SQL=Debug
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
5. DBConexao.java (\src\persistir\bd):
Esta classe registra uma sessão de banco de dados.
package persistir.bd;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class DBConexao {
private static final SessionFactory sessionFactory;
static {
try {
// Cria a SessionFactory a partir do hibernate.cfg.xml
sessionFactory = new Configuration().configure()
.buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Falha na criacao da SessionFactory" + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
6. Produto.java (\src\persistir\entidades):
Esta classe é uma entidade que mapeia os campos da tabela em objetos (obrigatório construtor e getters and setters).
package persistir.entidades;
public class Produto {
private int CD_PRODUTO;
private int NR_PRODUTO;
private String NM_PRODUTO;
private String NM_REDUZIDO;
private String DS_SETOR_DEPOSITO;
public Produto() {
}
public int getCD_PRODUTO() {
return CD_PRODUTO;
}
public void setCD_PRODUTO(int cd_produto) {
CD_PRODUTO = cd_produto;
}
public String getDS_SETOR_DEPOSITO() {
return DS_SETOR_DEPOSITO;
}
public void setDS_SETOR_DEPOSITO(String ds_setor_deposito) {
DS_SETOR_DEPOSITO = ds_setor_deposito;
}
public String getNM_PRODUTO() {
return NM_PRODUTO;
}
public void setNM_PRODUTO(String nm_produto) {
NM_PRODUTO = nm_produto;
}
public String getNM_REDUZIDO() {
return NM_REDUZIDO;
}
public void setNM_REDUZIDO(String nm_reduzido) {
NM_REDUZIDO = nm_reduzido;
}
public int getNR_PRODUTO() {
return NR_PRODUTO;
}
public void setNR_PRODUTO(int nr_produto) {
NR_PRODUTO = nr_produto;
}
}
7. Produto.hbm.xml (\src\persistir\entidades):
Este diz ao hibernate que tabela esta associada a tal entidade (objeto).
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="persistir.entidades.Produto"
table="TB_PRODUTO">
<id name="CD_PRODUTO" column="CD_PRODUTO">
<generator class="native" />
</id>
<property name="NR_PRODUTO" />
<property name="NM_PRODUTO" />
<property name="NM_REDUZIDO" />
<property name="DS_SETOR_DEPOSITO" />
</class>
</hibernate-mapping>
8. ObtemProduto.java (\src\persistir\negocio):
Classe que conecta no banco e faz um select =)
package persistir.negocio;
import persistir.bd.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Session;
public class ObtemProduto {
public HashMap getMercadoria(int codigo) {
/*--------------------<Conexao ao banco>-----------------------------*/
Session session = DBConexao.getSessionFactory().getCurrentSession();
session.beginTransaction();
List produtos = session.createSQLQuery("SELECT NM_PRODUTO FROM TB_PRODUTO WHERE NR_PRODUTO = " + codigo).list();
session.getTransaction().commit();
DBConexao.getSessionFactory().close();
/*--------------------</Conexao ao banco>-----------------------------*/
/*--------------------<Metodos>-----------------------------*/
HashMap mercadoria = new HashMap();
for (Iterator it = produtos.iterator(); it.hasNext();) {
String object = (String) it.next();
mercadoria.put("nome", object);
}
return mercadoria;
/*--------------------</Metodos>-----------------------------*/
}
public static void main(String[] args) {
HashMap produto = new ObtemProduto().getMercadoria(3220);
System.out.println(produto.get("nome"));
}
}