Me intrometendo aqui na sugest�o do Francisco Pinto Ara�jo J�nior.... acho que 
ficou faltando definir o inico da transa��o.
 
      try
      {
         con.setAutoCommit(false);  // <========================
                                    // inicio da transa��o
         classeA.InclusaoClasseA( con );
 
         classeB.InclusaoClasseB( con );
 
         // Se chegar aqui, � por que tah tudo ok
         con.commit();    // Efetiva a transa��o
      }
      catch( Exceptio e )
 
===========================================
Francisco Deisimar Nobre J�nior
Analista de Sistemas - CIT - M. Dias Branco
===========================================


-----Mensagem original-----
De: Carlo Giovano [mailto:cgiovano@;atlantico.com.br]
Enviada em: segunda-feira, 4 de novembro de 2002 09:17
Para: [EMAIL PROTECTED]
Assunto: RES: [cejug-discussao] Re: [cejug] Fw: D�vidas


S� para que o Clairton n�o fique em d�vida nas solu��es ( a enviada por mim e a do  
Pinto): Na verdade elas s�o equivalentes. A diferen�a � que vc pode usar a minha no 
caso de n�o querer deixar vis�vel o pacote de acesso a dados java.sql para classes de 
neg�cio e deixar isso apenas para suas classes de dados. Imagine que um servlet, ou um 
fa�ade ou uma janela Swing estejam usando suas classes A e B, nesse caso vc n�o 
gostaria de "pular" uma camada e fazer esses caras se amarraram ao pacote sql. Da� a 
id�ia do UserTransaction para esconder isso. No entanto, se voc� n�o tiver esse tipo 
de requisitos ent�o use a solu��o do Pinto que � mais direta ao ponto.
 
Carlo Giovano
CEJUG

-----Mensagem original-----
De: Francisco Pinto Ara�jo J�nior [mailto:pinto@;softexport.com.br]
Enviada em: segunda-feira, 4 de novembro de 2002 09:54
Para: [EMAIL PROTECTED]
Assunto: Re: [cejug-discussao] Re: [cejug] Fw: D�vidas


Clairton,
 
Voce podia utilizar o conceito de transa��o.
 
A id�ia seria algo maisno menos assim:
 
class ClassA
{
   public void InclusaoClasseA( Connection con )

   throws Exception
   {
       // Aplica a tua atualiza��o em usando a conex�o passada (con)
   }
}
 
class ClassB
{
   public void InclusaoClasseB( Connection con )
   throws Exception
   {
       // Aplica a tua atualiza��o em usando a conex�o passada (con)
   }
}
 
 
Na classe (X) que faz a opera��o desejada (Y), de incluss�o nas duas tabelas.:
 
class X
{
   void Y()
   {
 
      Connection con = getConnection() // Pega de algum forma uma conex�o
 
      ClasseA classA = new ClasseA();
      ...
 

      ClasseB classB = new ClasseB();
      ...
   
      try
      {
         classeA.InclusaoClasseA( con );
 
         classeB.InclusaoClasseB( con );
 
         // Se chegar aqui, � por que tah tudo ok
         con.commit();    // Efetiva a transa��o
      }
      catch( Exceptio e )
      {
         // Se chegar aqui � por que alguma das 2 opora��es teve problemas
         con.rollback(); // Joga fora as opera��es realizadas.
 
         throw e; // Propaga adiante, se for o caso, a exce��o que aconteceu 
                  // aqui, de modo que a aplica��o saiba que n�o foi realizada 
                  // com sucesso.
      }
   }
}
 
Francisco Pinto Ara�jo J�nior
Diretor de Tecnologia - Softexport Inform�tica
Msc. Ci�ncia da Computa��o
SCPJ2
Fone/Fax: +55 85 458 1947
[EMAIL PROTECTED]
www.softexport.com.br
----- Original Message ----- 
From: "Clairton" <  <mailto:clairton@;pmenos.com.br> [EMAIL PROTECTED]>
To: <  <mailto:discussao@;cejug.org> [EMAIL PROTECTED]>
Sent: Monday, November 04, 2002 8:17 AM
Subject: [cejug-discussao] Re: [cejug] Fw: D�vidas


> 
> Caros senhores da lista:
> 
> Tenho uma classe chamada de ClasseA, que tem o um metodo  publico de
> inclus�o chamado InclusaoClasseA, e inseri na tabela TabelaClasseA.
> Tenho outra classe chamada de ClasseB, que tem o um metodo  publico de
> inclus�o chamado InclusaoClasseB, e inseri na tabela TabelaClasseB.
> Ent�o a d�vida:
> Como fa�o para encapsular os dois metodos para aproveitar a mesma conex�o de
> banco de dados ? Ou seja : Se eu inserir na tabela TabelaClasseA e em
> seguida tentar inserir TabelaClasseB e na classe ClasseB der um erro no
> m�todo InclusaoClasseB, desfazer a minha inclus�o na InclusaoClasseA.
> 
> Agradece
> 
>  <mailto:clairton@;pmenos.com.br> [EMAIL PROTECTED]
> 

Responder a