Commit 16a3d2ca3d97cf6550b339c29d2ef12a7028a542

Authored by Cleverson Sacramento
1 parent 114731e3
Exists in master

Documentação da transação JDBC

Showing 1 changed file with 52 additions and 31 deletions   Show diff stats
documentation/reference/pt-BR/transacao.xml
... ... @@ -93,7 +93,7 @@ public class AbacaxiException {
93 93 </para>
94 94 <para>
95 95 Você também pode optar por não utilizar controle de transação. Neste caso, basta não utilizar a anotação <literal>@Transactional</literal>. Contudo,
96   - caso você a utilize, você poderá escolher entre as estratégias JPA, JTA (ambas fornecidas pelo <literal>Framework</literal>) e uma estratégia que você
  96 + caso você a utilize, você poderá escolher entre as estratégias JPA, JDBC, JTA (ambas fornecidas pelo <literal>Framework</literal>) e uma estratégia que você
97 97 pode criar ou importar para seu projeto.
98 98 </para>
99 99 <para>
... ... @@ -103,28 +103,46 @@ public class AbacaxiException {
103 103 </section>
104 104  
105 105 <section>
  106 + <title>Estratégia JDBC</title>
  107 + <para>
  108 + Esta estratégia, que está disponível na extensão <literal>demoiselle-jdbc</literal>, delega o
  109 + controle das transações para o <literal>java.sql.Connection</literal> da
  110 + especificação JDBC. Você deve escolher esta estratégia quando estiver persistindo dados
  111 + com JDBC e utilizando apenas uma base de dados em sua aplicação. Como um <literal>Connection</literal>
  112 + acessa apenas uma base de dados, não há como fazer o controle transacional de base de dados distintas.
  113 + </para>
  114 + <para>
  115 + A transação JDBC é simples de configurar e não exige nenhum recurso externo à sua aplicação.
  116 + Para utilizá-la basta que seu projeto adicione no arquivo pom.xml dependência à extensão <literal>demoiselle-jdbc</literal>, que o
  117 + Demoiselle fará a seleção por essa estratégia de forma automática.
  118 + </para>
  119 +
  120 + <tip><para>Para utilizar a estratégia de transação JDBC, inclua a dependência para extensão JDBC
  121 + no arquivo pom.xml.</para>
  122 + <programlisting role="XML"><![CDATA[<dependency>
  123 + <groupId>br.gov.frameworkdemoiselle</groupId>
  124 + <artifactId>demoiselle-jdbc</artifactId>
  125 + <scope>compile</scope>
  126 +</dependency>]]></programlisting></tip>
  127 + </section>
  128 +
  129 + <section>
106 130 <title>Estratégia JPA</title>
107 131 <para>
108 132 Esta estratégia, que está disponível na extensão <literal>demoiselle-jpa</literal>, delega o
109   - controle de transações para o <literal>javax.persistence.EntityManager</literal> da
110   - especificação JPA. Você deve escolher esta estratégia quando você estiver fazendo a persistência
  133 + controle das transações para o <literal>javax.persistence.EntityManager</literal> da
  134 + especificação JPA. Você deve escolher esta estratégia quando estiver persisteindo dados
111 135 com JPA e utilizando apenas uma base de dados em sua aplicação. Como um <literal>EntityManager</literal>
112 136 acessa apenas uma unidade de persistência, não há como fazer o controle transacional de unidades distintas.
113 137 </para>
114 138 <para>
115 139 A transação JPA é simples de configurar e não exige nenhum recurso externo à sua aplicação.
116   - Para utilizá-la basta que seu projeto adicione no arquivo POM.XML dependência à extensão <literal>demoiselle-jpa</literal>, que o
  140 + Para utilizá-la basta que seu projeto adicione no arquivo pom.xml dependência à extensão <literal>demoiselle-jpa</literal>, que o
117 141 Demoiselle fará a seleção por essa estratégia de forma automática.
118   -<!-- Basta definir no arquivo <filename>demoiselle.properties</filename> a seguinte configuração: -->
119 142 </para>
120 143  
121   - <!--
122   - <programlisting>
123   - frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JPATransaction
124   - </programlisting>
125   - -->
126   - <tip><para> Caso não esteja utilizando o arquétipo JSF-JPA fornecidos pelo Demoiselle, confira se a dependência para a
127   - extensão está indicada corretamente no arquivo POM.XML.</para>
  144 + <tip><para>Caso não esteja utilizando o arquétipo JSF-JPA fornecidos pelo Demoiselle, confira se a dependência para a
  145 + extensão está indicada corretamente no arquivo pom.xml.</para>
128 146 <programlisting role="XML"><![CDATA[<dependency>
129 147 <groupId>br.gov.frameworkdemoiselle</groupId>
130 148 <artifactId>demoiselle-jpa</artifactId>
... ... @@ -143,9 +161,9 @@ public class AbacaxiException {
143 161 <para>
144 162 A estratégia JTA não serve apenas para persistência em banco de dados, serve também para integrar com
145 163 tecnologias que façam acesso ao contexto JTA, como é o caso do EJB. Para ativar esta estratégia basta
146   - que seu projeto adicione no arquivo POM.XML a dependência à extensão <literal>demoiselle-jta</literal>, que o
  164 + que seu projeto adicione no arquivo pom.xml a dependência à extensão <literal>demoiselle-jta</literal>, que o
147 165 Demoiselle fará a seleção por essa estratégia de forma automática, pois essa estratégia tem prioridade em relação
148   - à estratégia JPA.
  166 + à estratégia JPA e JDBC.
149 167 </para>
150 168 <!--
151 169 defina no
... ... @@ -160,8 +178,9 @@ public class AbacaxiException {
160 178 você precisa de um container JEE ou de um servidor JTA qualquer.
161 179 </para>
162 180 <para>
163   - É preciso também informar no arquivo <filename>persistence.xml</filename> o endereço da conexão
164   - JTA gerenciada. Veja um exemplo utilizando o servidor de aplicações JBoss-AS6 e com o provider Hibernate (embutido no JBoss-AS) como implementação JPA:
  181 + Caso você esteja persistindo os dados com JPA, é preciso também informar no arquivo <filename>persistence.xml</filename>
  182 + o endereço da conexão JTA gerenciada. Veja um exemplo utilizando o servidor de aplicações JBoss AS7 e com o
  183 + provider Hibernate (embutido no JBoss AS) como implementação JPA:
165 184 </para>
166 185 <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
167 186 <persistence version="2.0"
... ... @@ -176,22 +195,28 @@ public class AbacaxiException {
176 195 <property name="hibernate.show_sql" value="true" />
177 196 <property name="hibernate.format_sql" value="false" />
178 197 <property name="hibernate.hbm2ddl.auto" value="update" />
179   - <property name="hibernate.transaction.jta.platform"
180   - value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
  198 + <property name="hibernate.transaction.jta.platform"
  199 + value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
181 200 </properties>
182 201 </persistence-unit>
183 202 </persistence>]]></programlisting>
184 203  
185   - <tip><para> Caso não esteja utilizando o arquétipo JSF-JPA fornecidos pelo Demoiselle, confira se a dependência para a
186   - extensão está indicada corretamente, no arquivo POM.XML.</para>
  204 + <tip><para>Caso não esteja utilizando o arquétipo JSF-JPA fornecidos pelo Demoiselle, confira se a dependência para a
  205 + extensão está indicada corretamente, no arquivo pom.xml.</para>
187 206 <programlisting role="XML"><![CDATA[<dependency>
188 207 <groupId>br.gov.frameworkdemoiselle</groupId>
189 208 <artifactId>demoiselle-jta</artifactId>
190 209 <scope>compile</scope>
191 210 </dependency>]]></programlisting></tip>
192 211  
  212 + <para>
  213 + Caso você esteja persistindo os dados com JDBC, é preciso também informar no arquivo <filename>demoiselle.properties</filename>
  214 + o endereço da conexão JTA gerenciada. Veja um exemplo utilizando o servidor de aplicações JBoss AS7:
  215 + </para>
  216 +
  217 +<programlisting role="XML"><![CDATA[frameworkdemoiselle.persistence.jndi.name=java:jboss/datasources/ExampleDS]]></programlisting>
193 218 </section>
194   -
  219 +
195 220 <section>
196 221 <title>Crie a sua estratégia</title>
197 222 <para>
... ... @@ -222,15 +247,9 @@ public class MegaTransaction implements Transaction {
222 247 }]]></programlisting>
223 248 <para>
224 249 Pronto, é só isso! Agora, os métodos anotados com <literal>@Transactional</literal> irão utilizar a estratégia criada em seu projeto de forma automática,
225   - mesmo que as extensões <literal>demoiselle-jpa</literal> e <literal>demoiselle-jta</literal> sejam adicionadas ao projeto, pois o framework dá prioridade
226   - máxima à estratégia criada no projeto.
227   - </para>
228   -<!-- <para>
229   - Basta agora definir no arquivo <filename>demoiselle.properties</filename> a sua estratégia:
  250 + mesmo que as extensões <literal>demoiselle-jdbc</literal>, <literal>demoiselle-jpa</literal> e <literal>demoiselle-jta</literal> sejam adicionadas ao
  251 + projeto, pois o framework dá prioridade máxima à estratégia criada no projeto.
230 252 </para>
231   - <programlisting>
232   - frameworkdemoiselle.transaction.class=projeto.MegaTransaction
233   - </programlisting>-->
234 253 </section>
235 254  
236 255 <section>
... ... @@ -239,11 +258,13 @@ public class MegaTransaction implements Transaction {
239 258 Existem alguns casos nos quais você vai ter que definir a estratégia manualmente. Um exemplo é quando seu projeto implementa mais do que uma estratégia
240 259 de transação. Outra situação pode acontecer em casos de teste, nos quais você queira utilizar estratégia diferente. Nesses casos você deve definir no
241 260 arquivo <filename>demoiselle.properties</filename> qual estratégia será utilizada. Veja alguns exemplos de definição de estratégias própria,
242   - <literal>JTATransaction</literal> e <literal>JPATransaction</literal> (importante notar que apenas uma estratégia pode estar ativa por vez):
  261 + <literal>JDBCTransaction</literal>, <literal>JPATransaction</literal> e <literal>JTATransaction</literal>. É importante notar que apenas uma estratégia
  262 + pode estar ativa por vez:
243 263 </para>
244 264 <programlisting>frameworkdemoiselle.transaction.class=projeto.MyTransaction</programlisting>
245   - <programlisting>frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JTATransaction</programlisting>
  265 + <programlisting>frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JDBCTransaction</programlisting>
246 266 <programlisting>frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JPATransaction</programlisting>
  267 + <programlisting>frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JTATransaction</programlisting>
247 268 </section>
248 269  
249 270 </chapter>
... ...