📄 transactions.po
字号:
"an EJB method returns, before rendering of any view can start. See the ""Hibernate website and forum for tips and examples around this <emphasis>Open ""Session in View</emphasis> pattern."msgstr """Às vezes é conveniente estender o escopo de uma <literal>Session</literal> e ""de uma transação do banco de dados até que a \"visão esteja renderizada\". É ""especialmente útil em aplicações servlet que utilizam uma fase de ""rendenderização separada depois que a requisição ter sido processada. ""Estendendo a transação até que renderização da visão esteja completa é fácil ""de fazer se você implementar seu próprio interceptador. Entretanto, não se ""pode fazer facilmente se você confiar em EJBs com transações gerenciadas por ""contêiner, porque uma transação será terminada quando um método de EJB ""retornar, antes da renderização de toda visão puder começar. Veja o website ""e o fórum do Hibernate para dicas e exemplos em torno deste pattern ""<emphasis>Open Session in View</emphasis>."#. Tag: title#: transactions.xml:135#, no-c-formatmsgid "Long conversations"msgstr "Longas conversações"#. Tag: para#: transactions.xml:137#, no-c-formatmsgid """The session-per-request pattern is not the only useful concept you can use ""to design units of work. Many business processes require a whole series of ""interactions with the user interleaved with database accesses. In web and ""enterprise applications it is not acceptable for a database transaction to ""span a user interaction. Consider the following example:"msgstr """O pattern sessão-por-requisição não é o único conceito útil que você pode ""usar ao projetar unidades de trabalho. Muitos processos de negócio requerem ""uma totalidade de séries de interações com o usuário intercaladas com ""acessos a uma base de dados. Em aplicações web e corporativas não é ""aceitável para uma transação atrapalhe uma interação do usuário. Considere o ""seguinte exemplo:"#. Tag: para#: transactions.xml:147#, no-c-formatmsgid """The first screen of a dialog opens, the data seen by the user has been ""loaded in a particular <literal>Session</literal> and database transaction. ""The user is free to modify the objects."msgstr """A primeira tela de um diálogo abre os dados carregado pelo usuário em ""através de <literal>Session</literal> e transação particulares. O usuário ""está livre modificar os objetos."#. Tag: para#: transactions.xml:154#, no-c-formatmsgid """The user clicks \"Save\" after 5 minutes and expects his modifications to be ""made persistent; he also expects that he was the only person editing this ""information and that no conflicting modification can occur."msgstr """O usuário clica em \"Salvar\" após 5 minutos e espera suas modificações ""serem persistidas; espera também que ele era a única pessoa que edita esta ""informação e que nenhuma modificação conflitante possa ocorrer."#. Tag: para#: transactions.xml:162#, no-c-formatmsgid """We call this unit of work, from the point of view of the user, a long ""running <emphasis>conversation</emphasis> (or <emphasis>application ""transaction</emphasis>). There are many ways how you can implement this in ""your application."msgstr """Nós chamamos esta unidade de trabalho, do ponto da visão do usuário, ""executando uma longa <emphasis>conversação</emphasis> (ou ""<emphasis>transação da aplicação</emphasis>). Há muitas maneiras de você ""pode implementar em sua aplicação."#. Tag: para#: transactions.xml:168#, no-c-formatmsgid """A first naive implementation might keep the <literal>Session</literal> and ""database transaction open during user think time, with locks held in the ""database to prevent concurrent modification, and to guarantee isolation and ""atomicity. This is of course an anti-pattern, since lock contention would ""not allow the application to scale with the number of concurrent users."msgstr """Uma primeira implementação simples pode manter a<literal>Session</literal> e ""a transação aberta durante o tempo de interação do usuário, com bloqueios na ""base de dados para impedir a modificação concorrente e para garantir o ""isolamento e a atomicidade. Esse é naturalmente um anti-pattern, desde que a ""disputa do bloqueio não permitiria o escalonameneto da aplicação com o ""número de usuários concorrentes."#. Tag: para#: transactions.xml:176#, no-c-formatmsgid """Clearly, we have to use several database transactions to implement the ""converastion. In this case, maintaining isolation of business processes ""becomes the partial responsibility of the application tier. A single ""conversation usually spans several database transactions. It will be atomic ""if only one of these database transactions (the last one) stores the updated ""data, all others simply read data (e.g. in a wizard-style dialog spanning ""several request/response cycles). This is easier to implement than it might ""sound, especially if you use Hibernate's features:"msgstr """Claramente, nós temos que usar diversas transações para implementar a ""conversação. Neste caso, Manter o isolamento dos processos de negócio torna-""se responsabilidade parcial da camada da aplicação. Uma única conversação ""geralmente usa diversas transações. Ela será atômica se somente uma destas ""transações (a última) armazenar os dados atualizados, todas as outras ""simplesmente leram os dados (por exemplo em um diálogo do estilo wizard que ""mede diversos ciclos de requisição/resposta). Isto é mais fácil de ""implementar do que pode parecer, especialmente se você usar as ""características do Hibernate:"#. Tag: para#: transactions.xml:189#, no-c-formatmsgid """<emphasis>Automatic Versioning</emphasis> - Hibernate can do automatic ""optimistic concurrency control for you, it can automatically detect if a ""concurrent modification occured during user think time. Usually we only ""check at the end of the conversation."msgstr """<emphasis>Versionamento automático</emphasis> - O Hibernate pode fazer o ""controle automático de concorrência otimista para você, ele pode ""automaticamente detectar se uma modificação concorrente ocorreu durante o ""tempo de interação do usuário. Geralmente nós verificamos somente no fim da ""conversação."#. Tag: para#: transactions.xml:197#, no-c-formatmsgid """<emphasis>Detached Objects</emphasis> - If you decide to use the already ""discussed <emphasis>session-per-request</emphasis> pattern, all loaded ""instances will be in detached state during user think time. Hibernate allows ""you to reattach the objects and persist the modifications, the pattern is ""called <emphasis>session-per-request-with-detached-objects</emphasis>. ""Automatic versioning is used to isolate concurrent modifications."msgstr """<emphasis>Detached Objects</emphasis>- se você se decidir usar o já ""discutido pattern <emphasis>session-per-request</emphasis>, todas as ""instâncias carregadas estarão no estado destacado durante o tempo em que o ""usuário estiver pensando. O Hibernate permite que você reatache os objetos e ""persita as modificações, esse pattern é chamado <emphasis>session-per-""request-with-detached-objects</emphasis>. É usado versionamento automatico ""para isolar as modificações concorrentes."#. Tag: para#: transactions.xml:207#, no-c-formatmsgid """<emphasis>Extended (or Long) Session</emphasis> - The Hibernate ""<literal>Session</literal> may be disconnected from the underlying JDBC ""connection after the database transaction has been committed, and ""reconnected when a new client request occurs. This pattern is known as ""<emphasis>session-per-conversation</emphasis> and makes even reattachment ""unnecessary. Automatic versioning is used to isolate concurrent ""modifications and the <literal>Session</literal> is usually not allowed to ""be flushed automatically, but explicitely."msgstr """<emphasis>Extended (or Long) Session</emphasis> A <literal>Session</literal> ""do Hibernate pode ser desligada da conexão básica do JDBC depois que a ""transação foi commitada e ser reconectado quando uma nova requisição do ""cliente ocorrer. Este pattern é conhecido como <emphasis>session-per-""conversation</emphasis> e faz o reatamento uniforme desnecessário. ""Versionamento automático é usado para isolar modificações concorrentes e a ""<emphasis>session-per-conversation</emphasis> usualmente não é permitido ""para ser nivelado automaticamente, e sim explicitamente."#. Tag: para#: transactions.xml:220#, no-c-formatmsgid """Both <emphasis>session-per-request-with-detached-objects</emphasis> and ""<emphasis>session-per-conversation</emphasis> have advantages and ""disadvantages, we discuss them later in this chapter in the context of ""optimistic concurrency control."msgstr """Ambos <emphasis>session-per-request-with-detached-objects</emphasis> e ""<emphasis>session-per-conversation</emphasis> possuem vantagens e ""desvantagens, nos discutiremos mais tarde neste capítulo no contexto do ""controle de concorrência otimista."#. Tag: title#: transactions.xml:229#, no-c-formatmsgid "Considering object identity"msgstr "Considerando a identidade do objeto"#. Tag: para#: transactions.xml:231#, no-c-formatmsgid """An application may concurrently access the same persistent state in two ""different <literal>Session</literal>s. However, an instance of a persistent ""class is never shared between two <literal>Session</literal> instances. ""Hence there are two different notions of identity:"msgstr """Uma aplicação pode acessar concorrentemente o mesmo estado persistente em ""duas <literal>Session</literal>s diferentes. Entretanto, uma instância de ""uma classe persistente nunca é compartilhada entre duas instâncias ""<literal>Session</literal>. Por tanto, há duas noções diferentes da ""identidade:"#. Tag: term#: transactions.xml:240#, no-c-formatmsgid "Database Identity"msgstr "Identidade da base de dados"#. Tag: literal#: transactions.xml:243#, no-c-formatmsgid "foo.getId().equals( bar.getId() )"msgstr "foo.getId().equals( bar.getId() )"#. Tag: term#: transactions.xml:248#, no-c-formatmsgid "JVM Identity"msgstr "Identidade da JVM"#. Tag: literal#: transactions.xml:251#, no-c-formatmsgid "foo==bar"msgstr "foo==bar"#. Tag: para#: transactions.xml:257#, fuzzy, no-c-formatmsgid """Then for objects attached to a <emphasis>particular</emphasis> ""<literal>Session</literal> (i.e. in the scope of a <literal>Session</""literal>) the two notions are equivalent, and JVM identity for database ""identity is guaranteed by Hibernate. However, while the application might ""concurrently access the \"same\" (persistent identity) business object in ""two different sessions, the two instances will actually be \"different""\" (JVM identity). Conflicts are resolved using (automatic versioning) at ""flush/commit time, using an optimistic approach."msgstr """Então para os objetos acoplados a um <literal>Session</literal> em ""<literal>particular </literal> (isto é no escopo de um <literal>Session</""literal>), as duas noções são equivalentes e a identidade da JVM para a ""identidade da base de dados é garantida pelo Hibernate. Entretanto, quando a ""aplicação pode acessar concorrentemente o \"mesmo\" objeto do negócio ""(identidade persistente) em duas sessões diferentes, as duas instâncias ""serão realmente \"diferentes\" (identidade de JVM). Os conflitos são ""resolvidos usando (versionamento automático) no flush/commit, usando ""abordagem otimista."#. Tag: para#: transactions.xml:266#, no-c-formatmsgid """This approach leaves Hibernate and the database to worry about concurrency; ""it also provides the best scalability, since guaranteeing identity in single-""threaded units of work only doesn't need expensive locking or other means of ""synchronization. The application never needs to synchronize on any business ""object, as long as it sticks to a single thread per <literal>Session</""literal>. Within a <literal>Session</literal> the application may safely use ""<literal>==</literal> to compare objects."msgstr """Este caminho deixa o Hibernate e o banco dedados se preocuparem com a ""concorrência; também fornece uma escalabilidade melhor, garantindo que a ""identidade em unidades de trabalho único-encadeadas não necessite de ""bloqueio dispendioso ou de outros meios de sincronização. A aplicação nunca ""necessita sincronizar qualquer objeto de negócio tão longo que transpasse ""uma única thread por <literal>Session</literal>. Dentro de uma ""<literal>Session</literal> a aplicação pode usar com segurança o ""<literal>==</literal> para comparar objetos."#. Tag: para#: transactions.xml:275#, no-c-formatmsgid ""
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -