Não tenho um web conteiner para ficar pegando conexões…
então eu faço uma vez a conexão e passo pros métodos…
ou crio uma varável estática e chama ela no método atravéz do classe principal…
estou com dúvidas sobre isto…
M
matheusPJ
e tu notou esses exemplos no link? :roll:
CloudscapeDAOFactory
// Cloudscape concrete DAO Factory implementationimportjava.sql.*;publicclassCloudscapeDAOFactoryextendsDAOFactory{publicstaticfinalStringDRIVER="COM.cloudscape.core.RmiJdbcDriver";publicstaticfinalStringDBURL="jdbc:cloudscape:rmi://localhost:1099/CoreJ2EEDB";// method to create Cloudscape connectionspublicstaticConnectioncreateConnection(){// Use DRIVER and DBURL to create a connection// Recommend connection pool implementation/usage}publicCustomerDAOgetCustomerDAO(){// CloudscapeCustomerDAO implements CustomerDAOreturnnewCloudscapeCustomerDAO();}publicAccountDAOgetAccountDAO(){// CloudscapeAccountDAO implements AccountDAOreturnnewCloudscapeAccountDAO();}publicOrderDAOgetOrderDAO(){// CloudscapeOrderDAO implements OrderDAOreturnnewCloudscapeOrderDAO();}...}
CloudscapeCustomerDAO
// CloudscapeCustomerDAO implementation of the // CustomerDAO interface. This class can contain all// Cloudscape specific code and SQL statements. // The client is thus shielded from knowing // these implementation details.importjava.sql.*;publicclassCloudscapeCustomerDAOimplementsCustomerDAO{publicCloudscapeCustomerDAO(){// initialization }// The following methods can use// CloudscapeDAOFactory.createConnection() // to get a connection as requiredpublicintinsertCustomer(...){// Implement insert customer here.// Return newly created customer number// or a -1 on error}publicbooleandeleteCustomer(...){// Implement delete customer here// Return true on success, false on failure}publicCustomerfindCustomer(...){// Implement find a customer here using supplied// argument values as search criteria// Return a Transfer Object if found,// return null on error or if not found}publicbooleanupdateCustomer(...){// implement update record here using data// from the customerData Transfer Object// Return true on success, false on failure or// error}publicRowSetselectCustomersRS(...){// implement search customers here using the// supplied criteria.// Return a RowSet. }publicCollectionselectCustomersTO(...){// implement search customers here using the// supplied criteria.// Alternatively, implement to return a Collection // of Transfer Objects.}...}
note este comentário no CloudscapeCustomerDAO: :grin:
// The following methods can use // CloudscapeDAOFactory.createConnection() // to get a connection as required
R
rodrigowPJ
Sim, exatamente como está desctito. A minha DAOFactory é abstrata.
publicabstractclassDAOFactory{/** tipos de DAO suportados pela factory */publicstaticfinalintMYSQL=1;publicstaticDAOFactorygetDAOFactory(intfactory){switch(factory){caseMYSQL:returnnewMySQLDAOFactory();default:returnnull;}}/** implementacoes para as classes concretas * */publicabstractConexaoDAOgetConexaoDAO();publicabstractClienteDAOgetClienteDAO();publicabstractMunicipioDAOgetMunicipioDAO();}
Só mudei o nome das classes e dos métodos.
Mas note que ali (j2ee) existe um web conteiner que gerencia tuas conexões ao BD, certo? Mas numa máquina local não preciso ficar fazendo conexões a torto e a direito. Somente uma conexão quando o kara faz login e desconexão quando fecha o programa... :sad:
Rodrigo
M
matheusPJ
vc deve estar se referindo a isso:
// method to create Cloudscape connections publicstaticConnectioncreateConnection(){// Use DRIVER and DBURL to create a connection // Recommend connection pool implementation/usage }
tu pode renomear ele pra getConnection(), e conectar ao banco como esta fazendo por ele, e retornar esta conexão dele, é a unica alteração…
R
rodrigowPJ
“matheus”:
tu pode renomear ele pra getConnection(), e conectar ao banco como esta fazendo por ele, e retornar esta conexão dele, é a unica alteração… :)
Sim. Blz. Mas quando vou usar, por exemplo, a MySQLDAOFactory recebe uma variável estática Connection. Então a minha MySQLClienteDAO, que é a classe que eu faço os insert(), update(), pega MySQLDAOFactory.VariavelStatica e tenho a conexão.
Isto esta certo fazer assim?
Achei que ficou bom… e minhas classes de swing não saber nada de Connection… só precisam saber qual a factory…
Que se acha?
Rodrigo
P.S.: Obrigado até agora pela atenção… :lol:
M
matheusPJ
bem… veja só, vamos analisar… hehehe, nesse pattern, se tu usar um pool, qual é o lance… é tu recuperar uma conexão antes de fazer uma consulta/insert oq for, e logo q fazer tu libera a conexão… certo? esse é um dos princípios de se usar pool… ok, agora, se tu usar uma conexão fixa com o banco, no getConnection vai te retornar a mesma referencia pra todos os DAOs, isso pq tu nao tem um pool pra gerenciar tuas conexões… bem, não sei se é a melhor maneira de se fazer qnd tu tem uma única conexão statica… mas ao meu ver esta legal…