Padrão DAO

Alguem poderia me explicar como eh esse padrão DAO ou onde posso encontrar uma boa explicação sobre ele na net?

Obrigada.

Silvana

Data Access Objects (DAO) a sua funcionalidade é Isolar camada de persistência. Sendo assim você não mistura o código do programa com o código de acessoa ao banco de dados, facilitando a manutenção e o reuso, caracterisitcas principais das linguagens OO - JAVA,.
Servlets e JSP, BEAN’s, EJB contém lógica de apresentação e lógica de negócio e o DAO contém código que isola detalhes de acesso ao banco.

um pequeno código de uma classe DAO para você!

public class DataAccessServlet extends HttpServlet { DataAccessDAO dao; public void init() { dao = JDBCDataAccessDAO .getInstance(); } public void doGet(... request, ... response) ... { try { // ... codigo de inicializacao do response String[] nomes = dao.listarTodosOsNomes(); out.println("<table border>"); for(int i = 0; i < nomes.length; i++ ) { out.println("<tr><td>"+ nomes[i]+"</tr></td>"); } // ... resto do codigo } catch (AcessoException e ) { throw new ServletException( e); } } }

…uma das melhores fontes sobre isso é o Core J2EE Patterns na minha opnião, segue o DAO:

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

:slight_smile:

Uma duvida sobre o DAO, a conexão é aberta no DAO ou é passada como parametro???

a conexão é feita por um DataSource… :slight_smile: , um pool… ja deixa algumas conexões feitas no banco, e qnd tu precisa de uma, ele só te passa a referencia… e tu a devolve pro pooll

falou… vale, Brigadão…

Salve Matheus!!! Salve galera do PJ!!!

Cara você por um acaso não teria um exemplo simples de como se usar pooll de conexão ai, teria???

Vlw galera…brigadão!!!

[quote=“FelipeOdoni”]Salve Matheus!!! Salve galera do PJ!!!

Cara você por um acaso não teria um exemplo simples de como se usar pooll de conexão ai, teria???

Vlw galera…brigadão!!![/quote]

tenho sim cara, tu quer pra JBoss ou Tomcat? ah… com JDBC3 tu pode fazer isso independente dos xml’s do container, só q eu só vi isso ser feito com o Portgress… eu tava precisando disso em Oracle e não achei… :sad:

[quote=“matheus”][quote=“FelipeOdoni”]Salve Matheus!!! Salve galera do PJ!!!

Cara você por um acaso não teria um exemplo simples de como se usar pooll de conexão ai, teria???

Vlw galera…brigadão!!![/quote]

tenho sim cara, tu quer pra JBoss ou Tomcat? ah… com JDBC3 tu pode fazer isso independente dos xml’s do container, só q eu só vi isso ser feito com o Portgress… eu tava precisando disso em Oracle e não achei… :sad:[/quote]

pra mim se vc tiver em tomcat fica bem melhor cara…na faculdade estamos usando o tomcat…to mais acostumado…

vlw!!!

ok, edite o seu arquivo serverl.xml no Tomcat, e procure por <GlobalNamingResources>, lá, tu adiciona o seguinte:

[code]
<Resource name="jdbc/PostgresDS" auth="Container" type="javax.sql.DataSource" />
<ResourceParams name="jdbc/PostgresDS">

	&lt;parameter&gt;&lt;name&gt;factory&lt;/name&gt;&lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;&lt;/parameter&gt;		
	&lt;parameter&gt;&lt;name&gt;driverClassName&lt;/name&gt;&lt;value&gt;org.postgresql.Driver&lt;/value&gt;&lt;/parameter&gt;
	&lt;parameter&gt;&lt;name&gt;url&lt;/name&gt;&lt;value&gt;jdbc&#58;postgresql&#58;//localhost5432/seuBanco&lt;/value&gt;&lt;/parameter&gt;
	
	&lt;parameter&gt;&lt;name&gt;username&lt;/name&gt;&lt;value&gt;usuario&lt;/value&gt;&lt;/parameter&gt;
	&lt;parameter&gt;&lt;name&gt;password&lt;/name&gt;&lt;value&gt;senha&lt;/value&gt;&lt;/parameter&gt;		
	&lt;parameter&gt;&lt;name&gt;maxActive&lt;/name&gt;&lt;value&gt;20&lt;/value&gt;&lt;/parameter&gt;		
	&lt;parameter&gt;&lt;name&gt;maxIdle&lt;/name&gt;&lt;value&gt;10&lt;/value&gt;&lt;/parameter&gt;				
	&lt;parameter&gt;&lt;name&gt;maxWait&lt;/name&gt;&lt;value&gt;100&lt;/value&gt;&lt;/parameter&gt;				
	
&lt;/ResourceParams&gt;[/code]

nesse caso, é um DataSource em Postgress, ai, no teu código, tu acha ele com:

InitialContext context = new InitialContext&#40;&#41;; Context ctx = &#40; Context &#41; context.lookup&#40; &quot;java&#58;comp/env/&quot; &#41;; dataSource = &#40; javax.sql.DataSource &#41; ctx.lookup&#40; &quot;jdbc/PostgresDS&quot; &#41;;

matheus, vc poderia me passar um exemplo de como se usar pooll de conexão para JBoss???.. c vc tiver é lógico…

aqui comigo eu não tenho um exemplo, mas no JBoss é mais simples ainda, no diretório /default/deploy do JBoss, normalmente existe um arquivo .xml pra configuração do pool de cada banco, é algo como postgresds.xml pra postgres, mysqlds pra mysql… nao lembro, nesse arquivo tu configura URL, usuário, senha, banco e tal… e faz a mesma procura no JNDI do teu código… :slight_smile:

Valeu pela ajuda… ja deu para para eu pegar o caminho… Brigadão