Loading ...
Sorry, an error occurred while loading the content.
 

RE: [riojug] Concorrencia com Hibernate

Expand Messages
  • Luís Fernando Orleans
    Marco, Eu também achei estranho o fato de a chave primária ser do tipo AUTO_INCREMENT. Como funciona a aplicação? Existe algum acesso ao banco para pegar a
    Message 1 of 9 , Apr 1, 2007

      Marco,

       

      Eu também achei estranho o fato de a chave primária ser do tipo AUTO_INCREMENT. Como funciona a aplicação? Existe algum acesso ao banco para pegar a próxima chave primária? Tipo,

       

      SELECT para pegar a chave primária;

      INSERT na tabela

       

      Se a sequência for essa, o Hibernate pode estar fazendo cache do resultado da consulta que retorna a chave primária. E isso explicaria a violação da constraint.

       

      []s

      Luís Fernando

       


      From: riojug@yahoogroups.com [mailto:riojug@yahoogroups.com] On Behalf Of Marco Duarte
      Sent: domingo, 1 de Abril de 2007 5:37
      To: riojug@yahoogroups.com
      Subject: Re: [riojug] Concorrencia com Hibernate

       

      Juarez,

       

      A aplicação usa Struts, Hibernate... O uso de syncronized é para que o  método quando executado garanta que o outro aguarde pelo seu termino. O problema que tenho uma carga grande de gravação por diversos usuario.

       

      abraços

      Marco Antonio

       

      ----- Original Message -----

      Sent: Saturday, March 31, 2007 10:59 PM

      Subject: Re: [riojug] Concorrencia com Hibernate

       

      Oi Marco,

      Nao esta claro qual framework voce esta usando, mas por que voce esta usando metodos synchronized?

      Alem disso, voce usa stateless session ejbs para iniciar transacoes? Qual atributo voce usa? Required?

      Tipo, voce tem um facade EJB com Hibernate? Como voce inicia as transacoes e qual atributo usa?

      Usa Spring?

      []'s

      Juarez Jr

      On 3/31/07, Marco Duarte <marcoduarte@ dtecconsultoria. com.br> wrote:

      Olá, Companheiros,

       

      Estou no momento numa aplicação a nivel Brasil, com acesso por Estado, onde tenho percebido alguns problemas a nivel de acesso a tabelas no BD-SqlServer onde gostaria da opinião ou sugestão dos colegas a respeito.

       

      O caso é o seguinte: Mais de um usuário acionando uma thread (para cada) que executa um processamento longo (1h). A caracteristica dessa aplicação é cada thread estar gravando/lendo numa mesma tabela. Ai, ao longo do processo, em momentos distintos, uma delas recebe "java.Sql.SQLExcept i on: Violation og Primary Key constraint - cannot insert duplicate key", sendo que a chave primaria é "Auto-Increment" .

       

      Olhem só: O método de gravação está com "Sincronized" e envolvido num "Transaction" .

       

      O que mais tenho que fazer para garantir a sincronização

      ou esse procedimento não é indicado p/ Hibernate

      ou o quê não estou e devo fazer?

       

      Valeu, à todos

      Marco Duarte




      --
      Juarez Junior - Software Developer/Architect - Java EE/ME/SE - Forum NOKIA Champion

      Sun Certified Programmer for Java 2 Platform 1.2
      Sun Certified Web Component Developer for J2EE Platform 1.3
      Sun Certified Web Component Developer for J2EE Platform 1.4
      Sun Certified Business Component Developer for J2EE Platform 1.3
      Sun Certified Enterprise Architect for J2EE Platform - Part I
      Sun Certified Programmer for Java 2 Platform 5.0
      Sun Certified Mobile Application Developer for the Java 2 Platform Micro Edition 1.0
      Sun Certified Associate for the Java 2 Platform 1.0

      E-mail/MSN/Google Talk: juarez.barbosa@ gmail.com
      MGJUG: juarez.barbosa@ mgjug.com. br
      GSM Mobile: +5531 9208 5948

      size=2 width="100%" align=center>

      No virus found in this incoming message.
      Checked by AVG Free Edition.
      Version: 7.5.446 / Virus Database: 268.18.23/740 - Release Date: 30/3/2007 13:15

    • Marco Duarte
      Oi, Luis, O codigo da chave é: // ------------------------- Métodos obrigatórios -------------------------- /** * Recupera a chave primária (identificador)
      Message 2 of 9 , Apr 1, 2007
        Oi, Luis,
         
        O codigo da chave é:
         // ------------------------- Métodos obrigatórios --------------------------
         /**
          * Recupera a chave primária (identificador) do objeto
          * @... column="id" type="java.lang.Long" generator-class="increment"
          * @return O identificador único do objeto
          */
         public Long getId() {
          return id;
         }
        - Não existe a situacao colocada referente  a proxima chave.
        A aplicação usa "save" sem especificar "set" para o id.
         
        abraço
        Marco Antonio
         
         
        ----- Original Message -----
        Sent: Sunday, April 01, 2007 9:30 AM
        Subject: RE: [riojug] Concorrencia com Hibernate

        Marco,

        Eu também achei estranho o fato de a chave primária ser do tipo AUTO_INCREMENT. Como funciona a aplicação? Existe algum acesso ao banco para pegar a próxima chave primária? Tipo,

        SELECT para pegar a chave primária;

        INSERT na tabela

        Se a sequência for essa, o Hibernate pode estar fazendo cache do resultado da consulta que retorna a chave primária. E isso explicaria a violação da constraint.

        []s

        Luís Fernando


        From: riojug@yahoogroups. com [mailto:riojug@ yahoogroups. com] On Behalf Of Marco Duarte
        Sent: domingo, 1 de Abril de 2007 5:37
        To: riojug@yahoogroups. com
        Subject: Re: [riojug] Concorrencia com Hibernate

        Juarez,

        A aplicação usa Struts, Hibernate... O uso de syncronized é para que o  método quando executado garanta que o outro aguarde pelo seu termino. O problema que tenho uma carga grande de gravação por diversos usuario.

        abraços

        Marco Antonio

        ----- Original Message -----

        Sent: Saturday, March 31, 2007 10:59 PM

        Subject: Re: [riojug] Concorrencia com Hibernate

        Oi Marco,

        Nao esta claro qual framework voce esta usando, mas por que voce esta usando metodos synchronized?

        Alem disso, voce usa stateless session ejbs para iniciar transacoes? Qual atributo voce usa? Required?

        Tipo, voce tem um facade EJB com Hibernate? Como voce inicia as transacoes e qual atributo usa?

        Usa Spring?

        []'s

        Juarez Jr

        On 3/31/07, Marco Duarte <marcoduarte@ dtecconsultoria. com.br> wrote:

        Olá, Companheiros,

        Estou no momento numa aplicação a nivel Brasil, com acesso por Estado, onde tenho percebido alguns problemas a nivel de acesso a tabelas no BD-SqlServer onde gostaria da opinião ou sugestão dos colegas a respeito.

        O caso é o seguinte: Mais de um usuário acionando uma thread (para cada) que executa um processamento longo (1h). A caracteristica dessa aplicação é cada thread estar gravando/lendo numa mesma tabela. Ai, ao longo do processo, em momentos distintos, uma delas recebe "java.Sql.SQLExcept i on: Violation og Primary Key constraint - cannot insert duplicate key", sendo que a chave primaria é "Auto-Increment" .

        Olhem só: O método de gravação está com "Sincronized" e envolvido num "Transaction" .

        O que mais tenho que fazer para garantir a sincronização

        ou esse procedimento não é indicado p/ Hibernate

        ou o quê não estou e devo fazer?

        Valeu, à todos

        Marco Duarte




        --
        Juarez Junior - Software Developer/Architect - Java EE/ME/SE - Forum NOKIA Champion

        Sun Certified Programmer for Java 2 Platform 1.2
        Sun Certified Web Component Developer for J2EE Platform 1.3
        Sun Certified Web Component Developer for J2EE Platform 1.4
        Sun Certified Business Component Developer for J2EE Platform 1.3
        Sun Certified Enterprise Architect for J2EE Platform - Part I
        Sun Certified Programmer for Java 2 Platform 5.0
        Sun Certified Mobile Application Developer for the Java 2 Platform Micro Edition 1.0
        Sun Certified Associate for the Java 2 Platform 1.0

        E-mail/MSN/Google Talk: juarez.barbosa@ gmail.com
        MGJUG: juarez.barbosa@ mgjug.com. br
        GSM Mobile: +5531 9208 5948


        size=2 width="100%" align=center>

        No virus found in this incoming message.
        Checked by AVG Free Edition.
        Version: 7.5.446 / Virus Database: 268.18.23/740 - Release Date: 30/3/2007 13:15


        No virus found in this incoming message.
        Checked by AVG Free Edition.
        Version: 7.5.446 / Virus Database: 268.18.24/741 - Release Date: 31/3/2007 20:54
      • fabiolnmiranda
        Marco, O problema pode estar na anotação **increment** do hibernate. Veja o tópico http://www.javafree.org/javabb/viewtopic.jbb?t=856770. Na documentação
        Message 3 of 9 , Apr 1, 2007
          Marco,

          O problema pode estar na anotação **increment** do hibernate. Veja o
          tópico http://www.javafree.org/javabb/viewtopic.jbb?t=856770.

          Na documentação do hibernate:

          increment: generates identifiers of type long, short or int that are
          unique only when no other process is inserting data into the same
          table. Do not use in a cluster.

          Particularmente, prefiro deixar os metadados relacionais no modelo
          entidade-relacionamento (direto no banco), e deixar o hibernate se
          virar com a anotação @GeneratedValue.

          Abs,
          Fábio.

          --- In riojug@yahoogroups.com, "Marco Duarte" <marcoduarte@...>
          wrote:
          >
          > Oi, Luis,
          >
          > O codigo da chave é:
          > // ------------------------- Métodos obrigatórios ----------------
          ----------
          > /**
          > * Recupera a chave primária (identificador) do objeto
          > * @... column="id" type="java.lang.Long" generator-
          class="increment"
          > * @return O identificador único do objeto
          > */
          > public Long getId() {
          > return id;
          > }
          >
          > - Não existe a situacao colocada referente a proxima chave.
          > A aplicação usa "save" sem especificar "set" para o id.
          >
          > abraço
          > Marco Antonio
          >
          >
          > ----- Original Message -----
          > From: Luís Fernando Orleans
          > To: riojug@yahoogroups.com
          > Sent: Sunday, April 01, 2007 9:30 AM
          > Subject: RE: [riojug] Concorrencia com Hibernate
          >
          >
          >
          > Marco,
          >
          >
          >
          > Eu também achei estranho o fato de a chave primária ser do tipo
          AUTO_INCREMENT. Como funciona a aplicação? Existe algum acesso ao
          banco para pegar a próxima chave primária? Tipo,
          >
          >
          >
          > SELECT para pegar a chave primária;
          >
          > INSERT na tabela
          >
          >
          >
          > Se a sequência for essa, o Hibernate pode estar fazendo cache do
          resultado da consulta que retorna a chave primária. E isso
          explicaria a violação da constraint.
          >
          >
          >
          > []s
          >
          > Luís Fernando
          >
          >
          >
          >
          > -------------------------------------------------------------------
          -----------
          >
          > From: riojug@yahoogroups.com [mailto:riojug@yahoogroups.com] On
          Behalf Of Marco Duarte
          > Sent: domingo, 1 de Abril de 2007 5:37
          > To: riojug@yahoogroups.com
          > Subject: Re: [riojug] Concorrencia com Hibernate
          >
          >
          >
          > Juarez,
          >
          >
          >
          > A aplicação usa Struts, Hibernate... O uso de syncronized é para
          que o método quando executado garanta que o outro aguarde pelo seu
          termino. O problema que tenho uma carga grande de gravação por
          diversos usuario.
          >
          >
          >
          > abraços
          >
          > Marco Antonio
          >
          >
          >
          > ----- Original Message -----
          >
          > From: Juarez Junior
          >
          > To: riojug@yahoogroups.com
          >
          > Sent: Saturday, March 31, 2007 10:59 PM
          >
          > Subject: Re: [riojug] Concorrencia com Hibernate
          >
          >
          >
          > Oi Marco,
          >
          > Nao esta claro qual framework voce esta usando, mas por que
          voce esta usando metodos synchronized?
          >
          > Alem disso, voce usa stateless session ejbs para iniciar
          transacoes? Qual atributo voce usa? Required?
          >
          > Tipo, voce tem um facade EJB com Hibernate? Como voce inicia
          as transacoes e qual atributo usa?
          >
          > Usa Spring?
          >
          > []'s
          >
          > Juarez Jr
          >
          >
          >
          > On 3/31/07, Marco Duarte <marcoduarte@...> wrote:
          >
          > Olá, Companheiros,
          >
          >
          >
          > Estou no momento numa aplicação a nivel Brasil, com acesso por
          Estado, onde tenho percebido alguns problemas a nivel de acesso a
          tabelas no BD-SqlServer onde gostaria da opinião ou sugestão dos
          colegas a respeito.
          >
          >
          >
          > O caso é o seguinte: Mais de um usuário acionando uma thread
          (para cada) que executa um processamento longo (1h). A
          caracteristica dessa aplicação é cada thread estar gravando/lendo
          numa mesma tabela. Ai, ao longo do processo, em momentos distintos,
          uma delas recebe "java.Sql.SQLException: Violation og Primary Key
          constraint - cannot insert duplicate key", sendo que a chave
          primaria é "Auto-Increment".
          >
          >
          >
          > Olhem só: O método de gravação está com "Sincronized" e
          envolvido num "Transaction".
          >
          >
          >
          > O que mais tenho que fazer para garantir a sincronização
          >
          > ou esse procedimento não é indicado p/ Hibernate
          >
          > ou o quê não estou e devo fazer?
          >
          >
          >
          > Valeu, à todos
          >
          > Marco Duarte
          >
          >
          >
          >
          > --
          > Juarez Junior - Software Developer/Architect - Java EE/ME/SE -
          Forum NOKIA Champion
          >
          > Sun Certified Programmer for Java 2 Platform 1.2
          > Sun Certified Web Component Developer for J2EE Platform 1.3
          > Sun Certified Web Component Developer for J2EE Platform 1.4
          > Sun Certified Business Component Developer for J2EE Platform
          1.3
          > Sun Certified Enterprise Architect for J2EE Platform - Part I
          > Sun Certified Programmer for Java 2 Platform 5.0
          > Sun Certified Mobile Application Developer for the Java 2
          Platform Micro Edition 1.0
          > Sun Certified Associate for the Java 2 Platform 1.0
          >
          > E-mail/MSN/Google Talk: juarez.barbosa@...
          > MGJUG: juarez.barbosa@...
          > GSM Mobile: +5531 9208 5948
          >
          >
          > -------------------------------------------------------------------
          ---------
          > size=2 width="100%" align=center>
          > No virus found in this incoming message.
          > Checked by AVG Free Edition.
          > Version: 7.5.446 / Virus Database: 268.18.23/740 - Release
          Date: 30/3/2007 13:15
          >
          >
          >
          >
          >
          >
          > -------------------------------------------------------------------
          -----------
          >
          >
          > No virus found in this incoming message.
          > Checked by AVG Free Edition.
          > Version: 7.5.446 / Virus Database: 268.18.24/741 - Release Date:
          31/3/2007 20:54
          >
        • Marco Duarte
          Obrigado, Fábio,... Vou continuar pesquisando essa questão. abraço Marco Duarte ... From: fabiolnmiranda To: riojug@yahoogroups.com Sent: Sunday, April 01,
          Message 4 of 9 , Apr 1, 2007
            Obrigado, Fábio,...
             
            Vou continuar pesquisando essa questão.
             
            abraço
            Marco Duarte 
            ----- Original Message -----
            Sent: Sunday, April 01, 2007 8:08 PM
            Subject: [riojug] Re: Concorrencia com Hibernate

            Marco,

            O problema pode estar na anotação **increment* * do hibernate. Veja o
            tópico http://www.javafree .org/javabb/ viewtopic. jbb?t=856770.

            Na documentação do hibernate:

            increment: generates identifiers of type long, short or int that are
            unique only when no other process is inserting data into the same
            table. Do not use in a cluster.

            Particularmente, prefiro deixar os metadados relacionais no modelo
            entidade-relacionam ento (direto no banco), e deixar o hibernate se
            virar com a anotação @GeneratedValue.

            Abs,
            Fábio.

            --- In riojug@yahoogroups. com, "Marco Duarte" <marcoduarte@ ...>
            wrote:
            >
            > Oi, Luis,
            >
            > O codigo da chave é:
            > // ------------ --------- ---- Métodos obrigatórios ------------ ----
            ----------
            > /**
            > * Recupera a chave primária (identificador) do objeto
            > * @... column="id" type="java.lang. Long" generator-
            class="increment"
            > * @return O identificador único do objeto
            > */
            > public Long getId() {
            > return id;
            > }
            >
            > - Não existe a situacao colocada referente a proxima chave.
            > A aplicação usa "save" sem especificar "set" para o id.
            >
            > abraço
            > Marco Antonio
            >
            >
            > ----- Original Message -----
            > From: Luís Fernando Orleans
            > To: riojug@yahoogroups. com
            > Sent: Sunday, April 01, 2007 9:30 AM
            > Subject: RE: [riojug] Concorrencia com Hibernate
            >
            >
            >
            > Marco,
            >
            >
            >
            > Eu também achei estranho o fato de a chave primária ser do tipo
            AUTO_INCREMENT. Como funciona a aplicação? Existe algum acesso ao
            banco para pegar a próxima chave primária? Tipo,
            >
            >
            >
            > SELECT para pegar a chave primária;
            >
            > INSERT na tabela
            >
            >
            >
            > Se a sequência for essa, o Hibernate pode estar fazendo cache do
            resultado da consulta que retorna a chave primária. E isso
            explicaria a violação da constraint.
            >
            >
            >
            > []s
            >
            > Luís Fernando
            >
            >
            >
            >
            > ------------ --------- --------- --------- --------- --------- -
            -----------
            >
            > From: riojug@yahoogroups. com [mailto:riojug@yahoogroups. com] On
            Behalf Of Marco Duarte
            > Sent: domingo, 1 de Abril de 2007 5:37
            > To: riojug@yahoogroups. com
            > Subject: Re: [riojug] Concorrencia com Hibernate
            >
            >
            >
            > Juarez,
            >
            >
            >
            > A aplicação usa Struts, Hibernate... O uso de syncronized é para
            que o método quando executado garanta que o outro aguarde pelo seu
            termino. O problema que tenho uma carga grande de gravação por
            diversos usuario.
            >
            >
            >
            > abraços
            >
            > Marco Antonio
            >
            >
            >
            > ----- Original Message -----
            >
            > From: Juarez Junior
            >
            > To: riojug@yahoogroups. com
            >
            > Sent: Saturday, March 31, 2007 10:59 PM
            >
            > Subject: Re: [riojug] Concorrencia com Hibernate
            >
            >
            >
            > Oi Marco,
            >
            > Nao esta claro qual framework voce esta usando, mas por que
            voce esta usando metodos synchronized?
            >
            > Alem disso, voce usa stateless session ejbs para iniciar
            transacoes? Qual atributo voce usa? Required?
            >
            > Tipo, voce tem um facade EJB com Hibernate? Como voce inicia
            as transacoes e qual atributo usa?
            >
            > Usa Spring?
            >
            > []'s
            >
            > Juarez Jr
            >
            >
            >
            > On 3/31/07, Marco Duarte <marcoduarte@ ...> wrote:
            >
            > Olá, Companheiros,
            >
            >
            >
            > Estou no momento numa aplicação a nivel Brasil, com acesso por
            Estado, onde tenho percebido alguns problemas a nivel de acesso a
            tabelas no BD-SqlServer onde gostaria da opinião ou sugestão dos
            colegas a respeito.
            >
            >
            >
            > O caso é o seguinte: Mais de um usuário acionando uma thread
            (para cada) que executa um processamento longo (1h). A
            caracteristica dessa aplicação é cada thread estar gravando/lendo
            numa mesma tabela. Ai, ao longo do processo, em momentos distintos,
            uma delas recebe "java.Sql.SQLExcept ion: Violation og Primary Key
            constraint - cannot insert duplicate key", sendo que a chave
            primaria é "Auto-Increment" .
            >
            >
            >
            > Olhem só: O método de gravação está com "Sincronized" e
            envolvido num "Transaction" .
            >
            >
            >
            > O que mais tenho que fazer para garantir a sincronização
            >
            > ou esse procedimento não é indicado p/ Hibernate
            >
            > ou o quê não estou e devo fazer?
            >
            >
            >
            > Valeu, à todos
            >
            > Marco Duarte
            >
            >
            >
            >
            > --
            > Juarez Junior - Software Developer/Architect - Java EE/ME/SE -
            Forum NOKIA Champion
            >
            > Sun Certified Programmer for Java 2 Platform 1.2
            > Sun Certified Web Component Developer for J2EE Platform 1.3
            > Sun Certified Web Component Developer for J2EE Platform 1.4
            > Sun Certified Business Component Developer for J2EE Platform
            1.3
            > Sun Certified Enterprise Architect for J2EE Platform - Part I
            > Sun Certified Programmer for Java 2 Platform 5.0
            > Sun Certified Mobile Application Developer for the Java 2
            Platform Micro Edition 1.0
            > Sun Certified Associate for the Java 2 Platform 1.0
            >
            > E-mail/MSN/Google Talk: juarez.barbosa@ ...
            > MGJUG: juarez.barbosa@ ...
            > GSM Mobile: +5531 9208 5948
            >
            >
            > ------------ --------- --------- --------- --------- --------- -
            ---------
            > size=2 width="100%" align=center>
            > No virus found in this incoming message.
            > Checked by AVG Free Edition.
            > Version: 7.5.446 / Virus Database: 268.18.23/740 - Release
            Date: 30/3/2007 13:15
            >
            >
            >
            >
            >
            >
            > ------------ --------- --------- --------- --------- --------- -
            -----------
            >
            >
            > No virus found in this incoming message.
            > Checked by AVG Free Edition.
            > Version: 7.5.446 / Virus Database: 268.18.24/741 - Release Date:
            31/3/2007 20:54
            >


            No virus found in this incoming message.
            Checked by AVG Free Edition.
            Version: 7.5.446 / Virus Database: 268.18.24/741 - Release Date: 31/3/2007 20:54
          Your message has been successfully submitted and would be delivered to recipients shortly.