Classe conexão
package Persistencia;
import Tela.JF_Servico;
import java.io.PrintWriter;
import java.sql.Array;
import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.NClob;
import java.sql.PreparedStatement;
import java.sql.SQLClientInfoException;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.SQLXML;
import java.sql.Savepoint;
import java.sql.Statement;
import java.sql.Struct;
import java.util.Map;
import java.util.Properties;
import org.hibernate.*;
import org.hibernate.cfg.*;
import java.sql.DatabaseMetaData;
import javax.sql.DataSource;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Rodrigo
*/
public final class Conexao implements Connection{
SessionFactory factory;
Session session;
Transaction t;
CallableStatement procedure;
Conexao con;
public Conexao(){
conectar();
}
public void desconectar(){
t.commit();
session.flush();
session.close();
}
public void conectar(){
factory = new Configuration().configure("VO/hibernate.cfg.xml").buildSessionFactory();
session = factory.openSession();
t = session.beginTransaction();
}
public Statement createStatement() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public PreparedStatement prepareStatement(String sql) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public String nativeSQL(String sql) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void setAutoCommit(boolean autoCommit) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean getAutoCommit() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void commit() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void rollback() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void close() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isClosed() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public DatabaseMetaData getMetaData() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void setReadOnly(boolean readOnly) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isReadOnly() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void setCatalog(String catalog) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public String getCatalog() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void setTransactionIsolation(int level) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public int getTransactionIsolation() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public SQLWarning getWarnings() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void clearWarnings() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Map<String, Class<?>> getTypeMap() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void setTypeMap(Map<String, Class<?>> map) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void setHoldability(int holdability) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public int getHoldability() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Savepoint setSavepoint() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Savepoint setSavepoint(String name) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void rollback(Savepoint savepoint) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void releaseSavepoint(Savepoint savepoint) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
throw new UnsupportedOperationException("Erro ao chamar store procedure");
}
public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Clob createClob() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Blob createBlob() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public NClob createNClob() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public SQLXML createSQLXML() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isValid(int timeout) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void setClientInfo(String name, String value) throws SQLClientInfoException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void setClientInfo(Properties properties) throws SQLClientInfoException {
throw new UnsupportedOperationException("Not supported yet.");
}
public String getClientInfo(String name) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Properties getClientInfo() throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Array createArrayOf(String typeName, Object[] elements) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Struct createStruct(String typeName, Object[] attributes) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public <T> T unwrap(Class<T> iface) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isWrapperFor(Class<?> iface) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
throw new UnsupportedOperationException("Erro ao chamar store procedure");
}
public CallableStatement prepareCall(String sql) throws SQLException {
return prepareCall(sql);
}
}
Classe serviço VO
package VO;
// Generated 10/04/2011 21:06:35 by Hibernate Tools 3.2.1.GA
/**
* Servico generated by hbm2java
*/
public class Servico implements java.io.Serializable {
private Double valor;
private String nome;
private String descricao;
private String duracao;
public Servico() {
}
public Servico(Double valor, String nome, String descricao, String duracao) {
this.valor = valor;
this.nome = nome;
this.descricao = descricao;
this.duracao = duracao;
}
public Double getValor() {
return this.valor;
}
public void setValor(Double valor) {
this.valor = valor;
}
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return this.descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getDuracao() {
return this.duracao;
}
public void setDuracao(String duracao) {
this.duracao = duracao;
}
}
Mapeamento da tabela serviço
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 10/04/2011 21:06:37 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class name="VO.Servico" table="SERVICO">
<id name="codr" type="int">
<column name="CODSERVICO" />
<generator class="increment" />
</id>
<property name="valor" type="java.lang.Double">
<column name="VALOR" precision="15" scale="0" />
</property>
<property name="nome" type="string">
<column name="NOME" length="50" />
</property>
<property name="descricao" type="string">
<column name="DESCRICAO" length="100" />
</property>
<property name="duracao" type="string">
<column name="DURACAO" length="20" />
</property>
<sql-query name="sp_insere_servico" callable="true">
<return>
<return-property name="valor" column="valor"/>
<return-property name="nome" column="nome"/>
<return-property name="descricao" column="descricao"/>
<return-property name="duracao" column="duracao"/>
</return>
{ call sp_insere_servico(?, ?, ?, ?) }
</sql-query>
</class>
</hibernate-mapping>
frame jf_servico
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* JF_Servico.java
*
* Created on 03/04/2011, 16:52:31
*/
package Tela;
import java.math.BigDecimal.*;
import RNegocios.RN_Servico;
import VO.*;
import javax.swing.JOptionPane;
/**
*
* @author Thyago H. Pacher
*/
public class JF_Servico extends javax.swing.JFrame {
/** Creates new form JF_Servico */
public JF_Servico() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
label_nome = new javax.swing.JLabel();
label_descricao = new javax.swing.JLabel();
label_duracao = new javax.swing.JLabel();
label_valor = new javax.swing.JLabel();
text_nome = new javax.swing.JTextField();
text_descricao = new javax.swing.JTextField();
text_valor = new javax.swing.JTextField();
text_duracao = new javax.swing.JTextField();
botao_confirmar = new javax.swing.JButton();
botao_sair = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Serviço");
label_nome.setText("Nome");
label_descricao.setText("Descrição");
label_duracao.setText("Duração");
label_valor.setText("Valor");
text_nome.setToolTipText("digite o nome do serviço");
text_descricao.setToolTipText("o que é o serviço");
text_valor.setToolTipText("qual o valor do seviço");
text_duracao.setToolTipText("qual o tempo médio do serviço");
botao_confirmar.setText("Confirmar");
botao_confirmar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
botao_confirmarActionPerformed(evt);
}
});
botao_sair.setText("Sair");
botao_sair.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
botao_sairActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label_descricao)
.addComponent(label_nome)
.addComponent(label_duracao)
.addComponent(label_valor))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(text_descricao, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE)
.addComponent(text_nome, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE)
.addComponent(text_valor, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE)
.addComponent(text_duracao, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE))
.addGap(79, 79, 79))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(209, 209, 209)
.addComponent(botao_confirmar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 8, Short.MAX_VALUE)
.addComponent(botao_sair)
.addContainerGap())))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(37, 37, 37)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(label_nome)
.addComponent(text_nome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(label_descricao)
.addComponent(text_descricao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(label_duracao)
.addComponent(text_duracao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label_valor)
.addComponent(text_valor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 35, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(botao_confirmar)
.addComponent(botao_sair))
.addContainerGap())
);
pack();
}// </editor-fold>
private void botao_sairActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
}
private void botao_confirmarActionPerformed(java.awt.event.ActionEvent evt) {
Servico cadServ = new Servico();
cadServ.setValor (Double.valueOf(text_valor.getText()));
cadServ.setNome (text_nome.getText());
cadServ.setDescricao(text_descricao.getText());
cadServ.setDuracao (text_duracao.getText());
RN_Servico cadRNServ = new RN_Servico();
String mensagem = cadRNServ.gravarObjeto(cadServ);
JOptionPane.showMessageDialog(null, mensagem);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JF_Servico().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton botao_confirmar;
private javax.swing.JButton botao_sair;
private javax.swing.JLabel label_descricao;
private javax.swing.JLabel label_duracao;
private javax.swing.JLabel label_nome;
private javax.swing.JLabel label_valor;
private javax.swing.JTextField text_descricao;
private javax.swing.JTextField text_duracao;
private javax.swing.JTextField text_nome;
private javax.swing.JTextField text_valor;
// End of variables declaration
}
ServicoRN
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package RNegocios;
/**
*
* @author Thyago H. Pacher
*/
import Persistencia.*;
import VO.*;
import java.util.*;
public class RN_Servico {
public String gravarObjeto(Servico cadServ){
Pers_Servico cadPersServico = new Pers_Servico();
String mensagem = cadPersServico.gravarObjeto(cadServ);
return mensagem;
}
public String alterarObjeto(Servico cadServ){
Pers_Servico cadPersServico = new Pers_Servico();
String mensagem = cadPersServico.alterarObjeto(cadServ);
return mensagem;
}
public String excluirObjeto(Servico cadServ){
Pers_Servico cadPersServico = new Pers_Servico();
String mensagem = cadPersServico.excluirObjeto(cadServ);
return mensagem;
}
//ver que campo vai ser usado para procurado
public Servico retornarNomeTel(String CPF){
Pers_Servico cadPersServico = new Pers_Servico();
Servico cadServ = cadPersServico.retornarNomeTel(CPF);
return cadServ;
}
//volta a consulta de todos os elementos
public Vector consultaTodos(){
Vector vetorGeral = new Vector();
Pers_Servico cadPersServico = new Pers_Servico();
// vetorGeral = cadPers.consultaTodos();
return vetorGeral;
}
}
servico persistencia
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Persistencia;
import Tela.JF_Servico;
import VO.*;
//imports usados para hibernate(funcionando em pc utfpr)
import java.sql.*;
import java.util.*;
import org.hibernate.*;
import org.hibernate.cfg.*;
/**
*
* @author Thyago H. Pacher
*/
public class Pers_Servico {
Conexao con;
CallableStatement procedure;
Servico cadServ = new Servico();
public String gravarObjeto(Servico cadServ){
String mensagem;
//utilizando uma store procedure
try {
con.conectar();
SessionFactory factory = new Configuration().
configure("VO/hibernate.cfg.xml").
buildSessionFactory();
Connection connection = procedure.getConnection();
Session session = factory.openSession();
Transaction t = session.beginTransaction();
procedure = connection.prepareCall("{call SP_INSERE_SERVICO(?, ?, ?, ?)}");
procedure.setDouble(1, cadServ.getValor());
procedure.setString(2, cadServ.getNome());
procedure.setString(3, cadServ.getDescricao());
procedure.setString(4,cadServ.getDuracao());
procedure.execute();
t.commit();
session.flush();
session.close();
con.desconectar();
mensagem = "Gravou Sucesso";
} catch (Exception e) {
mensagem = "Erro na gravação:\n" + e;
}
return mensagem;
}
public String alterarObjeto(Servico cadServ){
String msg;
try{
SessionFactory factory = new Configuration().
configure("VO/hibernate.cfg.xml").
buildSessionFactory();
Session session = factory.openSession();
Transaction t = session.beginTransaction();
session.update(cadServ);
t.commit();
session.flush();
session.close();
msg = "Atualizou com sucesso!";
}catch(Exception e){
msg = "Erro:\n" + e.getMessage();
}
return msg;
}
public String excluirObjeto(Servico cadServ){
String msg;
try{
SessionFactory factory = new Configuration().
configure("VO/hibernate.cfg.xml").
buildSessionFactory();
Session session = factory.openSession();
Transaction t = session.beginTransaction();
session.delete(cadServ);
t.commit();
session.flush();
session.close();
msg = "Gravou com sucesso!";
}catch(Exception e){
msg = "Erro:" + e.getMessage();
}
return msg;
}
public Servico retornarNomeTel(String CPF){
SessionFactory factory = new Configuration().
configure("VO/hibernate.cfg.xml").
buildSessionFactory();
Session session = factory.openSession();
cadServ = (Servico) session.get(Servico.class, new Integer(CPF));
return cadServ;
}
}
tabela servico no banco de dados
CREATE TABLE "SERVICO"
(
"CODSERVICO" INTEGER NOT NULL,
"VALOR" DOUBLE PRECISION,
"NOME" VARCHAR(50),
"DESCRICAO" VARCHAR(100),
"DURACAO" VARCHAR(20),
PRIMARY KEY ("CODSERVICO")
);
Configuração do hibernate
<?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>
<property name="hibernate.dialect">org.hibernate.dialect.FirebirdDialect</property>
<property name="hibernate.connection.driver_class">org.firebirdsql.jdbc.FBDriver</property>
<property name="hibernate.connection.url">jdbc:firebirdsql:localhost:H:\Estacionamento\Sistema_Estacionamento.fdb</property>
<property name="hibernate.connection.username">sysdba</property>
<property name="hibernate.connection.password">masterkey</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="hibernate.show_sql">true</property>
<mapping class="VO.Servico.hbm" file="" jar="" package="VO" resource="VO/Servico.hbm.xml"/>
<mapping resource="VO/Pessoa.hbm.xml"/>
<mapping resource="VO/Veiculo.hbm.xml"/>
<mapping resource="VO/Funcionario.hbm.xml"/>
<mapping resource="VO/Horario.hbm.xml"/>
<mapping resource="VO/Plano.hbm.xml"/>
<mapping resource="VO/Recibo.hbm.xml"/>
<mapping resource="VO/ServicoSolicitado.hbm.xml"/>
<mapping resource="VO/Estacionamento.hbm.xml"/>
<mapping resource="VO/Servico.hbm.xml"/>
<mapping resource="VO/Pessoa.hbm.xml"/>
<mapping resource="VO/Veiculo.hbm.xml"/>
<mapping resource="VO/Funcionario.hbm.xml"/>
<mapping resource="VO/Horario.hbm.xml"/>
<mapping resource="VO/Plano.hbm.xml"/>
<mapping resource="VO/Recibo.hbm.xml"/>
<mapping resource="VO/ServicoSolicitado.hbm.xml"/>
<mapping resource="VO/Funcionario.hbm.xml.xml"/>
<mapping resource="VO/Estacionamento.hbm.xml"/>
<mapping resource="VO/Servico.hbm.xml"/>
<mapping resource="VO/Pessoa.hbm.xml"/>
<mapping resource="VO/Veiculo.hbm.xml"/>
<mapping resource="VO/Funcionario.hbm.xml"/>
<mapping resource="VO/Horario.hbm.xml"/>
<mapping resource="VO/Plano.hbm.xml"/>
<mapping resource="VO/Recibo.hbm.xml"/>
<mapping resource="VO/ServicoSolicitado.hbm.xml"/>
<mapping resource="VO/Estacionamento.hbm.xml"/>
<mapping resource="VO/Servico.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Arquivo de engenharia reversa
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd">
<hibernate-reverse-engineering>
<schema-selection/>
<table-filter match-name="RECIBO"/>
<table-filter match-name="PLANO"/>
<table-filter match-name="SERVICOSOLICITADO"/>
<table-filter match-name="PESSOA"/>
<table-filter match-name="ESTACIONAMENTO"/>
<table-filter match-name="VEICULO"/>
<table-filter match-name="FUNCIONARIO"/>
<table-filter match-name="HORARIO"/>
<table-filter match-name="SERVICO"/>
</hibernate-reverse-engineering>
Da a seguinte mensagem quando tento fazer o cadastro java.lang.nullpointerexception