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 | 4 | <chapter id="persistencia"> |
| 5 | 5 | |
| 6 | 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 | 22 | <section> |
| 23 | + | |
| 9 | 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 | 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 | 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 | 44 | <groupId>br.gov.frameworkdemoiselle</groupId> |
| 17 | 45 | <artifactId>demoiselle-jdbc</artifactId> |
| 18 | 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 | 252 | </section> |
| 75 | 253 | ... | ... |