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,7 +93,7 @@ public class AbacaxiException {
93 </para> 93 </para>
94 <para> 94 <para>
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, 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 pode criar ou importar para seu projeto. 97 pode criar ou importar para seu projeto.
98 </para> 98 </para>
99 <para> 99 <para>
@@ -103,28 +103,46 @@ public class AbacaxiException { @@ -103,28 +103,46 @@ public class AbacaxiException {
103 </section> 103 </section>
104 104
105 <section> 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 <title>Estratégia JPA</title> 130 <title>Estratégia JPA</title>
107 <para> 131 <para>
108 Esta estratégia, que está disponível na extensão <literal>demoiselle-jpa</literal>, delega o 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 com JPA e utilizando apenas uma base de dados em sua aplicação. Como um <literal>EntityManager</literal> 135 com JPA e utilizando apenas uma base de dados em sua aplicação. Como um <literal>EntityManager</literal>
112 acessa apenas uma unidade de persistência, não há como fazer o controle transacional de unidades distintas. 136 acessa apenas uma unidade de persistência, não há como fazer o controle transacional de unidades distintas.
113 </para> 137 </para>
114 <para> 138 <para>
115 A transação JPA é simples de configurar e não exige nenhum recurso externo à sua aplicação. 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 Demoiselle fará a seleção por essa estratégia de forma automática. 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 </para> 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 <programlisting role="XML"><![CDATA[<dependency> 146 <programlisting role="XML"><![CDATA[<dependency>
129 <groupId>br.gov.frameworkdemoiselle</groupId> 147 <groupId>br.gov.frameworkdemoiselle</groupId>
130 <artifactId>demoiselle-jpa</artifactId> 148 <artifactId>demoiselle-jpa</artifactId>
@@ -143,9 +161,9 @@ public class AbacaxiException { @@ -143,9 +161,9 @@ public class AbacaxiException {
143 <para> 161 <para>
144 A estratégia JTA não serve apenas para persistência em banco de dados, serve também para integrar com 162 A estratégia JTA não serve apenas para persistência em banco de dados, serve também para integrar com
145 tecnologias que façam acesso ao contexto JTA, como é o caso do EJB. Para ativar esta estratégia basta 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 Demoiselle fará a seleção por essa estratégia de forma automática, pois essa estratégia tem prioridade em relação 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 </para> 167 </para>
150 <!-- 168 <!--
151 defina no 169 defina no
@@ -160,8 +178,9 @@ public class AbacaxiException { @@ -160,8 +178,9 @@ public class AbacaxiException {
160 você precisa de um container JEE ou de um servidor JTA qualquer. 178 você precisa de um container JEE ou de um servidor JTA qualquer.
161 </para> 179 </para>
162 <para> 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 </para> 184 </para>
166 <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?> 185 <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
167 <persistence version="2.0" 186 <persistence version="2.0"
@@ -176,22 +195,28 @@ public class AbacaxiException { @@ -176,22 +195,28 @@ public class AbacaxiException {
176 <property name="hibernate.show_sql" value="true" /> 195 <property name="hibernate.show_sql" value="true" />
177 <property name="hibernate.format_sql" value="false" /> 196 <property name="hibernate.format_sql" value="false" />
178 <property name="hibernate.hbm2ddl.auto" value="update" /> 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 </properties> 200 </properties>
182 </persistence-unit> 201 </persistence-unit>
183 </persistence>]]></programlisting> 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 <programlisting role="XML"><![CDATA[<dependency> 206 <programlisting role="XML"><![CDATA[<dependency>
188 <groupId>br.gov.frameworkdemoiselle</groupId> 207 <groupId>br.gov.frameworkdemoiselle</groupId>
189 <artifactId>demoiselle-jta</artifactId> 208 <artifactId>demoiselle-jta</artifactId>
190 <scope>compile</scope> 209 <scope>compile</scope>
191 </dependency>]]></programlisting></tip> 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 </section> 218 </section>
194 - 219 +
195 <section> 220 <section>
196 <title>Crie a sua estratégia</title> 221 <title>Crie a sua estratégia</title>
197 <para> 222 <para>
@@ -222,15 +247,9 @@ public class MegaTransaction implements Transaction { @@ -222,15 +247,9 @@ public class MegaTransaction implements Transaction {
222 }]]></programlisting> 247 }]]></programlisting>
223 <para> 248 <para>
224 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, 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 </para> 252 </para>
231 - <programlisting>  
232 - frameworkdemoiselle.transaction.class=projeto.MegaTransaction  
233 - </programlisting>-->  
234 </section> 253 </section>
235 254
236 <section> 255 <section>
@@ -239,11 +258,13 @@ public class MegaTransaction implements Transaction { @@ -239,11 +258,13 @@ public class MegaTransaction implements Transaction {
239 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 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 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 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 arquivo <filename>demoiselle.properties</filename> qual estratégia será utilizada. Veja alguns exemplos de definição de estratégias própria, 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 </para> 263 </para>
244 <programlisting>frameworkdemoiselle.transaction.class=projeto.MyTransaction</programlisting> 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 <programlisting>frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JPATransaction</programlisting> 266 <programlisting>frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JPATransaction</programlisting>
  267 + <programlisting>frameworkdemoiselle.transaction.class=br.gov.frameworkdemoiselle.transaction.JTATransaction</programlisting>
247 </section> 268 </section>
248 269
249 </chapter> 270 </chapter>