Commit 16a3d2ca3d97cf6550b339c29d2ef12a7028a542
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> |