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 | 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> | ... | ... |