Commit 409070cf02315175261ac789e1c121bd185cc8dc
1 parent
db1cd17c
Exists in
master
Reorganizada documentação de JDBC
Showing
1 changed file
with
231 additions
and
53 deletions
Show diff stats
documentation/reference/pt-BR/persistencia.xml
@@ -4,72 +4,250 @@ | @@ -4,72 +4,250 @@ | ||
4 | <chapter id="persistencia"> | 4 | <chapter id="persistencia"> |
5 | 5 | ||
6 | <title>Persistência</title> | 6 | <title>Persistência</title> |
7 | + | ||
8 | + <para> | ||
9 | + Persistência é um dos aspectos mais importantes de sistemas corporativos - grande parte desses sistemas devem | ||
10 | + em algum ponto persistir informações em um sistema gerenciador de banco de dados. A tecnologia Java conta | ||
11 | + hoje com algumas formas de facilitar o acesso a SGBD's - algumas são especificações Java como o JDBC | ||
12 | + e o JPA, outras são tecnologias desenvolvidas por terceiros como o Hibernate. | ||
13 | + </para> | ||
14 | + | ||
15 | + <para> | ||
16 | + O Framework Demoiselle facilita o acesso e a configuração a algumas dessas tecnologias fornecendo produtores | ||
17 | + padrão para seus pontos de entrada e centralizando a configuração. Tudo que o desenvolvedor deve fazer | ||
18 | + é apenas injetar o recurso adequado em seu código e o Framework Demoiselle se encarregará de | ||
19 | + produzi-lo e configurá-lo. | ||
20 | + </para> | ||
7 | 21 | ||
8 | <section> | 22 | <section> |
23 | + | ||
9 | <title>JDBC</title> | 24 | <title>JDBC</title> |
25 | + | ||
26 | + <para> | ||
27 | + O Framework Demoiselle fornece um produtor padrão para conexões JDBC puras. Esse produtor possui suporte | ||
28 | + ao acesso direto utilizando uma URL e ao acesso via <code>DataSource</code>, acessando a conexão através | ||
29 | + de um nome <code>JNDI</code> configurado em um servidor de aplicação. | ||
30 | + </para> | ||
31 | + | ||
10 | <para> | 32 | <para> |
11 | - A persistência de dados usando JDBC, está disponível na extensão <literal>demoiselle-jdbc</literal>, | ||
12 | - que provê uma fábrica de <literal>Connection</literal>. Para utilizá-la basta incluir a dependência para extensão JDBC | ||
13 | - no arquivo pom.xml. | 33 | + A persistência de dados usando JDBC está disponível na extensão <literal>demoiselle-jdbc</literal>. Para ter acesso |
34 | + a essa extensão em um projeto Maven declare sua dependência no arquivo <literal>pom.xml</literal> de seu projeto. | ||
14 | </para> | 35 | </para> |
15 | - <programlisting role="XML"><![CDATA[<dependency> | 36 | + |
37 | + <tip> | ||
38 | + <para> | ||
39 | + Para acrescentar a dependência à extensão <literal>demoiselle-jdbc</literal>, adicione esse código | ||
40 | + em seu arquivo <literal>pom.xml</literal>, na seção <literal>dependencies</literal>. | ||
41 | + </para> | ||
42 | + | ||
43 | + <programlisting role="XML"><![CDATA[<dependency> | ||
16 | <groupId>br.gov.frameworkdemoiselle</groupId> | 44 | <groupId>br.gov.frameworkdemoiselle</groupId> |
17 | <artifactId>demoiselle-jdbc</artifactId> | 45 | <artifactId>demoiselle-jdbc</artifactId> |
18 | <scope>compile</scope> | 46 | <scope>compile</scope> |
19 | -</dependency>]]> | ||
20 | - </programlisting> | 47 | +</dependency>]]></programlisting> |
48 | + </tip> | ||
49 | + | ||
50 | + <section> | ||
51 | + <title>Configuração</title> | ||
21 | 52 | ||
22 | - <para> | ||
23 | - Para obter uma instância de uma conexão, basta injetá-la na classe: | ||
24 | - </para> | ||
25 | - <programlisting role="JAVA"><![CDATA[@Inject | ||
26 | -private Connection conn;]]></programlisting> | ||
27 | - <para> | ||
28 | - A conexão será criada pela fábrica do Demoiselle de acordo com as configurações no arquivo de propriedade (<emphasis>demoiselle.properties</emphasis>). | ||
29 | - </para> | ||
30 | - <para> | ||
31 | - Você pode configurar as propriedades da conexão: | ||
32 | - </para> | ||
33 | - <programlisting>frameworkdemoiselle.persistence.driver.class=MeuDriver | ||
34 | -frameworkdemoiselle.persistence.url=MinhaUrl | ||
35 | -frameworkdemoiselle.persistence.username=MeuUsername | ||
36 | -frameworkdemoiselle.persistence.password=MeuPassword</programlisting> | ||
37 | - <para> | ||
38 | - ou indicar o JNDI do datasource: | ||
39 | - </para> | ||
40 | - <programlisting>frameworkdemoiselle.persistence.jndi.name=MeuJndiName</programlisting> | 53 | + <para> |
54 | + A conexão será criada pela fábrica do Demoiselle de acordo com as configurações no arquivo de propriedade (<emphasis>demoiselle.properties</emphasis>). | ||
55 | + Para configurar uma conexão diretamente através de uma URL utilize as propriedades abaixo: | ||
56 | + </para> | ||
57 | + | ||
58 | + <informaltable width="100%"> | ||
59 | + <tgroup cols="2"> | ||
60 | + <colspec align="left"/> | ||
61 | + <colspec align="left"/> | ||
62 | + | ||
63 | + <thead> | ||
64 | + <row valign="top"> | ||
65 | + <entry><emphasis role="bold">Propriedade</emphasis></entry> | ||
66 | + <entry><emphasis role="bold">Descrição</emphasis></entry> | ||
67 | + </row> | ||
68 | + </thead> | ||
69 | + | ||
70 | + <tbody> | ||
71 | + <row valign="top"> | ||
72 | + <entry>frameworkdemoiselle.​persistence.​driver.​class</entry> | ||
73 | + <entry> | ||
74 | + <para> | ||
75 | + Implementação da interface <code>java.sql.Driver</code> que dá acesso | ||
76 | + ao SGBD utilizado pela aplicação. | ||
77 | + </para> | ||
78 | + </entry> | ||
79 | + </row> | ||
80 | + | ||
81 | + <row valign="top"> | ||
82 | + <entry>frameworkdemoiselle.​persistence.​url</entry> | ||
83 | + <entry> | ||
84 | + <para> | ||
85 | + URL de conexão no formato <code>jdbc:vendor:database-properties</code>. | ||
86 | + </para> | ||
87 | + </entry> | ||
88 | + </row> | ||
89 | + | ||
90 | + <row valign="top"> | ||
91 | + <entry>frameworkdemoiselle.​persistence.​username</entry> | ||
92 | + <entry> | ||
93 | + <para> | ||
94 | + Login de acesso ao SGBD. | ||
95 | + </para> | ||
96 | + </entry> | ||
97 | + </row> | ||
98 | + | ||
99 | + <row valign="top"> | ||
100 | + <entry>frameworkdemoiselle.​persistence.​password</entry> | ||
101 | + <entry> | ||
102 | + <para> | ||
103 | + Senha de acesso ao SGBD. | ||
104 | + </para> | ||
105 | + </entry> | ||
106 | + </row> | ||
107 | + </tbody> | ||
108 | + </tgroup> | ||
109 | + </informaltable> | ||
110 | + | ||
111 | + <para> | ||
112 | + Também é possível configurar o acesso indicando um nome <code>JNDI</code> que esteja | ||
113 | + configurado no servidor de aplicação. | ||
114 | + </para> | ||
115 | + | ||
116 | + <informaltable width="100%"> | ||
117 | + <tgroup cols="2"> | ||
118 | + <colspec align="left"/> | ||
119 | + <colspec align="left"/> | ||
120 | + | ||
121 | + <thead> | ||
122 | + <row valign="top"> | ||
123 | + <entry><emphasis role="bold">Propriedade</emphasis></entry> | ||
124 | + <entry><emphasis role="bold">Descrição</emphasis></entry> | ||
125 | + </row> | ||
126 | + </thead> | ||
127 | + | ||
128 | + <tbody> | ||
129 | + <row valign="top"> | ||
130 | + <entry>frameworkdemoiselle.​persistence.​jndi.​name</entry> | ||
131 | + <entry> | ||
132 | + <para> | ||
133 | + Nome <code>JNDI</code> criado no servidor de aplicação para dar acesso | ||
134 | + à conexão ao banco de dados. | ||
135 | + </para> | ||
136 | + </entry> | ||
137 | + </row> | ||
138 | + </tbody> | ||
139 | + </tgroup> | ||
140 | + </informaltable> | ||
141 | + | ||
142 | + <para> | ||
143 | + É possível configurar mais de uma conexão JDBC. Para isso acrescente nas propriedades nomes | ||
144 | + separados para cada conexão como no exemplo abaixo: | ||
145 | + </para> | ||
146 | + | ||
147 | + <example> | ||
148 | + <title>Criando múltiplas conexões</title> | ||
149 | + | ||
150 | + <programlisting>frameworkdemoiselle.​persistence.​<emphasis role="bold">conn1</emphasis>.​driver.​class=MinhaClasse | ||
151 | +frameworkdemoiselle.​persistence.​<emphasis role="bold">conn1</emphasis>.​url=MinhaURL | ||
152 | +frameworkdemoiselle.​persistence.​<emphasis role="bold">conn1</emphasis>.​username=MeuLogin | ||
153 | +frameworkdemoiselle.​persistence.​<emphasis role="bold">conn1</emphasis>.​password=MinhaSenha | ||
41 | 154 | ||
42 | - <para> | ||
43 | - Caso você necessite usar conexões com datasources diferentes, você pode usar a anotoção | ||
44 | - <literal>@Name</literal> passando como valor o nome da conexão definida no arquivo | ||
45 | - <literal>demoiselle.properties</literal> | ||
46 | - </para> | ||
47 | - | ||
48 | - <para> | ||
49 | - No <literal>demoiselle.properties</literal> basta adicionar um nome qualquer para identificar a conexão: | ||
50 | - </para> | ||
51 | - <programlisting>frameworkdemoiselle.persistence.conn1.jndi.name=MeuJndiName1 | ||
52 | -frameworkdemoiselle.persistence.conn2.jndi.name=MeuJndiName2</programlisting> | ||
53 | - | ||
54 | - <para> | ||
55 | - Injetar o <literal>Connection</literal> usando <literal>@Name</literal> com o nome da conexão escolhida: | ||
56 | - </para> | ||
57 | - | ||
58 | - <programlisting role="JAVA"><![CDATA[@Inject | ||
59 | -@Name("conn1") | ||
60 | -private Connection conn1; | 155 | +frameworkdemoiselle.​persistence.​<emphasis role="bold">conn2</emphasis>.​driver.​class=MinhaClasse |
156 | +frameworkdemoiselle.​persistence.​<emphasis role="bold">conn2</emphasis>.​url=MinhaURL | ||
157 | +frameworkdemoiselle.​persistence.​<emphasis role="bold">conn2</emphasis>.​username=MeuLogin | ||
158 | +frameworkdemoiselle.​persistence.​<emphasis role="bold">conn2</emphasis>.​password=MinhaSenha</programlisting> | ||
159 | + | ||
160 | + <programlisting>frameworkdemoiselle.​persistence.​<emphasis role="bold">conn1</emphasis>.​jndi.​name=MeuJndiName1 | ||
161 | +frameworkdemoiselle.​persistence.​<emphasis role="bold">conn2</emphasis>.​jndi.​name=MeuJndiName2</programlisting> | ||
162 | + </example> | ||
163 | + | ||
164 | + <para> | ||
165 | + Caso várias conexões sejam configuradas, é possível determinal a conexão padrão - aquela | ||
166 | + que será utilizada quando o desenvolvedor não especificar qual deseja utilizar. | ||
167 | + </para> | ||
168 | + | ||
169 | + <informaltable width="100%"> | ||
170 | + <tgroup cols="2"> | ||
171 | + <colspec align="left"/> | ||
172 | + <colspec align="left"/> | ||
173 | + | ||
174 | + <thead> | ||
175 | + <row valign="top"> | ||
176 | + <entry><emphasis role="bold">Propriedade</emphasis></entry> | ||
177 | + <entry><emphasis role="bold">Descrição</emphasis></entry> | ||
178 | + </row> | ||
179 | + </thead> | ||
180 | + | ||
181 | + <tbody> | ||
182 | + <row valign="top"> | ||
183 | + <entry>frameworkdemoiselle.​persistence.​default.​datasource.​name</entry> | ||
184 | + <entry> | ||
185 | + <para> | ||
186 | + Caso múltiplas conexões sejam criadas, define a conexão padrão | ||
187 | + quando uma <code>Connection</code> é injetada no código sem utilizar | ||
188 | + a anotação <code>@Name</code>. | ||
189 | + </para> | ||
190 | + </entry> | ||
191 | + </row> | ||
192 | + </tbody> | ||
193 | + </tgroup> | ||
194 | + </informaltable> | ||
195 | + </section> | ||
196 | + | ||
197 | + <section> | ||
198 | + <title>Utilização</title> | ||
199 | + | ||
200 | + <para> | ||
201 | + Para utilizar uma conexão JDBC em seu código, basta injetá-la. O Demoiselle se encarregará de produzir | ||
202 | + o tipo adequado de conexão. | ||
203 | + </para> | ||
204 | + | ||
205 | + <programlisting role="JAVA"><![CDATA[public class ClasseDAO { | ||
206 | + | ||
207 | + @Inject | ||
208 | + private Connection conn1; | ||
209 | + | ||
210 | + public void metodoPersistir(){ | ||
211 | + conn1.prepareStatement("INSERT INTO TAB_1 VALUES (1,'JDBC')").execute(); | ||
212 | + } | ||
213 | + | ||
214 | +}]]></programlisting> | ||
61 | 215 | ||
62 | -@Inject | ||
63 | -@Name("conn2") | ||
64 | -private Connection conn2; | ||
65 | -]]></programlisting> | 216 | + <para> |
217 | + Caso multiplas conexões tenham sido definidas, é possível utilizar a anotação <code>@Name</code> para injetar | ||
218 | + uma conexão específica. | ||
219 | + </para> | ||
220 | + | ||
221 | + <programlisting role="JAVA"><![CDATA[public class ClasseDAO { | ||
222 | + | ||
223 | + @Inject | ||
224 | + @Name("conn1") | ||
225 | + private Connection conn1; | ||
226 | + | ||
227 | + @Inject | ||
228 | + @Name("conn2") | ||
229 | + private Connection conn2; | ||
230 | + | ||
231 | + public void metodoPersistirEmConn1(){ | ||
232 | + conn1.prepareStatement("INSERT INTO TAB_1 VALUES (1,'JDBC')").execute(); | ||
233 | + } | ||
234 | + | ||
235 | + public void metodoPersistirEmConn2(){ | ||
236 | + conn2.prepareStatement("INSERT INTO TAB_2 VALUES (1,'JDBC')").execute(); | ||
237 | + } | ||
238 | + | ||
239 | +}]]></programlisting> | ||
66 | 240 | ||
241 | + <caution> | ||
242 | + <para> | ||
243 | + Caso a propriedade <code>frameworkdemoiselle.persistence.default.datasource.name</code> seja utilizada para | ||
244 | + especificar uma conexão padrão, a anotação <code>@Name</code> só é necessária para utilizar conexões diferentes | ||
245 | + da padrão. Caso essa propriedade não seja utilizada e existam múltiplas conexões configuradas, torna-se obrigatório | ||
246 | + o uso da anotação <code>@Name</code> em todos os pontos de injeção. | ||
247 | + </para> | ||
248 | + </caution> | ||
67 | 249 | ||
68 | - <para> | ||
69 | - Caso possua mais de uma configuração de datasource você pode definir uma configuração padrão | ||
70 | - para sua aplicação. | ||
71 | - </para> | ||
72 | - <programlisting>frameworkdemoiselle.persistence.default.datasource.name=conn1</programlisting> | 250 | + </section> |
73 | 251 | ||
74 | </section> | 252 | </section> |
75 | 253 |