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 |