Valeu pelas explicações. Mas ainda acho esse método, de ter uma transação apenas por cliente meio estranho. Analise comigo.
Numa aplicação o usuário pode fazer várias coisas ao mesmo tempo, enquanto está vendendo um ítem, pode abrir uma outra tela, simultaneamente para fazer uma consulta, ou outra para verificar as contas do cliente, etc... ações que não devem partilhar da mesma transação, podendo cancelar essas últimas e commitar apenas a transação da venda. Numa aplicação assim, multitarefa, teria que colocar uma conexão em cada tela!!! Isso significa que cada vez que o usuário quer fazer apenas uma consulta, deve ser aberta uma nova conexão (que as vezes pode demorar uns 3 segundos)... Um usuário inesperiente pode abrir umas 10 telas simultaneamente, (não uma por cima da outra em modo MODAL que usaria a mesma transação, mas telas que deveriam usar transações diferentes, paralelas)... Isso resultaria que um mesmo computador cliente estaria com 10 conexões abertas!!! Você não acha isso estranho??? O que considero ser certo é o modelo que o IBX do Delphi usa, um Database (a conexão) e várias transações, quantas eu desejar. Essa é a maneira ideal para se implementar um sistema multitarefa, em que o usuário pode fazer várias coisas ao mesmo tempo, cancelando umas e comitando outras. Por favor, diga-me o que você acha disso. Se estou com meu conceito errado, gostaria de mudar, mas por um conceito que seja melhor. Queria que você me ajudasse a entender que o conceito da ZeosLib de apenas uma conexão é melhor do que o conceito que o IBX do Delphi usa. Obrigado. ----- Original Message ----- From: "Nabucodonosor Coutinho" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Monday, April 17, 2006 10:14 AM Subject: Re: [PostgreSQL-Brasil] ZeosLib não controla transações? Nelson Pereira Júnior escreveu: >Pessoal, uso a ZeosLib com PG. > >No entanto, não estou conseguindo controlar as transações. > >Quando abro uma tela de edição, uma transação deveria ser iniciada. Quando >fecho, essa transação deverá ser fechada. > >Esse é o meu conceito de transação. > > Bom, sendo bem direto. Seu conceito de transação está errado. >No entanto, o controle transacional do ZeosLib está no próprio componente >Connection. Dessa forma, em meu sistema que permite que várias telas de >edição sejam abertas simultaneamente, se quisesse ter um controle de >transações como mencionado teria que colocar um Connection para cada tela >de >edição. > >O que vocês acham dessa forma como a ZeosLib implementaram o controle >transacinal? > > Essa é a forma correta de implentar o controle transacional. Setando a transação por conexão. Veja por exemplo em java o início, cancelamento ou confirmaçao de uma trasação sao métdos do objeto connection. Nesse caso deve ser aberta uma conexao para cada transacao concorrente. A lógica da implentaçao de transaçao é que um mesmo cliente (representado por uma conexao) nao tem necessidade de concorrer consigo mesmo. Isso me leva a crer que voce nao está entendendo o conceito e a implentaçao do controle de trasaçoes. Imagine que um mesmo cliente provavelmente nao vai fazer simultaneamente 1 pedidos de compra e dar baixa no mesmo produto em n janelas. O correto agora para detalhar o processo é o amigo usar componentes SQL para entao controlar manualmente as trasações via SQL com begin, commit e rollback mas acho que não seja exatamente o caso. >_______________________________________________ >Grupo de Usuários do PostgreSQL no Brasil >http://www.postgresql.org.br > > > _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil http://www.postgresql.org.br _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil http://www.postgresql.org.br
