Idéia de um pool de conexões, se isso é necessário mesmo
Preciso criar uma classe genérica para gravar,alterar e excluir, um CRUD mas que atenda todo o meu projeto. Ou seja, se eu estou com o form de cadastro eu pego a conexão e qualquer alteração,excklusão ou inserção, deverá ser feito na tabela de cadastro. Não sei se estou sendo claro. Gostaria de uma idéia para isso.
Pjava
Curtidas 0
Respostas
Davi Costa
27/04/2011
Cara vc vai ter que pesquisar sobre generics em java.
Se vc usar JPA beleza que todas suas classes mapeadas vão ser Entity. Então na sua classe genérica basta vc colocar:
public class GenericCrudService<Entity>......
E nessa classe já ter implementado o crud completo ... exemplo de um método:
public final Entity insert(Entity obj) {
entityManager.persist(obj);
return obj;
}
Daí qdo vc precisar que algum serviço de alguma classe sua como Cliente por exemplo, basta criar sua classe extendendo dessa classe genérica:
public class CleinteServiceImpl extends GenericCrudService<Cliente>... e por herança já vai pegar todos os métodos da sua classe genérica.
Se vc não usa JPA, suas classes do modelo, vc estende ela de alguma classe mais genérica q possua pelo menos um id.. nem q seja um um Object esse id, pq se sua chave primária não for um Long ou Integer iria funcionar com String tb e ai na sua classe genérica do crud vc alteraria Entity por essa classe q todas as classes do modelo estendem dela....lembrando nesse caso se vc não usar JPA(ou sua implementações Hibernate , TopLink e por ai vai).
Att Davi
Se vc usar JPA beleza que todas suas classes mapeadas vão ser Entity. Então na sua classe genérica basta vc colocar:
public class GenericCrudService<Entity>......
E nessa classe já ter implementado o crud completo ... exemplo de um método:
public final Entity insert(Entity obj) {
entityManager.persist(obj);
return obj;
}
Daí qdo vc precisar que algum serviço de alguma classe sua como Cliente por exemplo, basta criar sua classe extendendo dessa classe genérica:
public class CleinteServiceImpl extends GenericCrudService<Cliente>... e por herança já vai pegar todos os métodos da sua classe genérica.
Se vc não usa JPA, suas classes do modelo, vc estende ela de alguma classe mais genérica q possua pelo menos um id.. nem q seja um um Object esse id, pq se sua chave primária não for um Long ou Integer iria funcionar com String tb e ai na sua classe genérica do crud vc alteraria Entity por essa classe q todas as classes do modelo estendem dela....lembrando nesse caso se vc não usar JPA(ou sua implementações Hibernate , TopLink e por ai vai).
Att Davi
GOSTEI 0
Davi Costa
27/04/2011
Só complementando. artigo de Generics aqui da devmedia:
https://www.devmedia.com.br/post-18757-Desmistificando-a-Certificacao-SCJP6-Parte-II.html
Att Davi
https://www.devmedia.com.br/post-18757-Desmistificando-a-Certificacao-SCJP6-Parte-II.html
Att Davi
GOSTEI 0
Pjava
27/04/2011
Genericos eu tenho estudado bem e conheço bem, até porque sempre trampei com Delphi e Delphi 2011 se usa muito esse conceit. Só queria saber se o caminho é esse mesmo. Eu usarei nesse projeto JPA sim.
GOSTEI 0
Davi Costa
27/04/2011
Show de bola cara.
Então qualquer dúvidar mais pontual é só chamar.
Att Davi
Então qualquer dúvidar mais pontual é só chamar.
Att Davi
GOSTEI 0
Pjava
27/04/2011
Só uma pergunta: Eu uso Helios com JSF 2.0, e Hibernate/JPA. Em realidade ainda não coloquei nada do Hibernate em meu projeto. É necessário criar o Hibernate.cfg.xml? Preciso criar na mão esse arquivo ou o Helios faz isso, já que como me disseram, ele já implementa o Hibernate. Ainda não testei gravar em banco ou algo parecido, vou começar a fazer isso amanhã. Esse é meu início na ferra e estou meio apreensivo.
GOSTEI 0
Robson Teixeira
27/04/2011
Olá
quando você usa JPA não necessita de criar hibernate.cfg.xml basta criar o persistence.xml e só e somente ele ser o seu projeto for JPA project o eclipse cria automaticamente caso contrario deverá criar na mão ou da 1 busca sobre hibernateTools.
qualquer coisa e so chamar
att
robson Passarella
quando você usa JPA não necessita de criar hibernate.cfg.xml basta criar o persistence.xml e só e somente ele ser o seu projeto for JPA project o eclipse cria automaticamente caso contrario deverá criar na mão ou da 1 busca sobre hibernateTools.
qualquer coisa e so chamar
att
robson Passarella
GOSTEI 0
Pjava
27/04/2011
Uma pergunta. Se eu na hora de criar o Hibernate.cfg eu renomear para Persistence.xml, isso é aceitável? Porque o cfg.xml eu consigo gerar no Eclipse, logo se eu renomear terei o arquivo Persistence.xml já pronto, com o cabeçalho já criado e etc..., pois pelo que eu vi é semelhante ao cfg.xml.
GOSTEI 0
Davi Costa
27/04/2011
É melhor vc dar uma olhada no google e pegar algum exemplo.
Não tem o mesmo conteúdo não.
Att Davi
Não tem o mesmo conteúdo não.
Att Davi
GOSTEI 0
Robson Teixeira
27/04/2011
Não necessariamente pois as algumas tags no xml são diferentes segue 1 modelo de persistence.xml para você ver as diferenças.
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="GameNetPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>br.com.games.GameNet.entity.Aparelho</class>
<class>br.com.games.GameNet.entity.Cliente</class>
<class>br.com.games.GameNet.entity.Funcionario</class>
<class>br.com.games.GameNet.entity.Genero</class>
<class>br.com.games.GameNet.entity.Item</class>
<class>br.com.games.GameNet.entity.ItemVenda</class>
<class>br.com.games.GameNet.entity.Jogo</class>
<class>br.com.games.GameNet.entity.Pessoa</class>
<class>br.com.games.GameNet.entity.Venda</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<validation-mode>NONE</validation-mode>
<properties> <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/gamenet"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.user" value="postgres"/>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>
</persistence> O hibernate tem implementação JPA e no xml tem que seguir a especificação JPA . Esse modelo trabalha com o eclipseLink que é outro framework orm.
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>br.com.games.GameNet.entity.Aparelho</class>
<class>br.com.games.GameNet.entity.Cliente</class>
<class>br.com.games.GameNet.entity.Funcionario</class>
<class>br.com.games.GameNet.entity.Genero</class>
<class>br.com.games.GameNet.entity.Item</class>
<class>br.com.games.GameNet.entity.ItemVenda</class>
<class>br.com.games.GameNet.entity.Jogo</class>
<class>br.com.games.GameNet.entity.Pessoa</class>
<class>br.com.games.GameNet.entity.Venda</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<validation-mode>NONE</validation-mode>
<properties> <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/gamenet"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.user" value="postgres"/>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>
</persistence> O hibernate tem implementação JPA e no xml tem que seguir a especificação JPA . Esse modelo trabalha com o eclipseLink que é outro framework orm.
GOSTEI 0
Robson Teixeira
27/04/2011
desculpe deu 1 erro aqui na maquina.
mas sim pesquise um pouco sobre JPA e ja que deseja usar o hibernate procure exemplos de modelo do persistence.xml usando hibernate.
qualquer coisa e so chamar
att
robson
GOSTEI 0