Ajuda, padrão de projeto na persistência

18 respostas
alandiniz

Galera desculpa criar este tópico… + estou desesperado… rsrs
procurei vários tutoriais, video aula, livro (e-book), na internet e não achei nada que eu queria…
eu estou com 2 problemas…

1- não sei ao certo quando instanciar um novo objeto, parece que cada vez que alguem entra no meu sistema ele cria “algo” novo na memória e ela vai sobrecarregando… sei disso pois tenho um servidor alugado VPS e pelo linux usando htop eu vejo o uso da memória…
2- minha conexão com o banco de dados está ficando aberta e depois de um tempo da erro :frowning:

Eu vi vários tutoriais na internet, mais eu não consegui achar nenhum que ensina +ou- da forma que eu faço…
1 - Primeiro eu faço a modelagem do banco no MySQL Workbench
2 - Crio o projeto no netbeans 6.8 ou superior… e nessa parte já adiciono JSF 2.0, hibernate e primefaces…
3- crio um pacote modelo, e faço a engenharia reversa… neste caso ja vai criar a persistence.xml que vai ficar as configurações de conexão com o banco… no caso vai ficar NomedoprojetoPU
4- depois eu crio o pacote “beans” e crio por exemplo o UsuarioBean. onde eu coloco a anotação @ManagedBean e faço os métodos de salvar, getters and setters etc…
5- e eu tenho um pacote “banco” com 2 classe… “Persitencia” que tem uma referencia pro NomedoprojetoPU e “DaoGenerico” que tem alguns métodos como por exemplo:

public void salvarNovo(Object obj){ em.getTransaction.begin(); em.persist(obj); em.getTransaction.commit(); }

Se alguém puder me ajudar, eu iria agradecer muito, nem que for pra min posta meu projeto completo aki pra download…
Eu to sempre ajudando ai no fórum… estou sempre ativo, e se alguém puder me ajudar eu agradeço muito :smiley:

Qualquer coisa se alguem tiver um livro ou tutorial, qualquer coisa que ajude eu fico grato =)

Eu tenho 3 livros de java, mais é muito extenso e complexo… se eu pegar um projeto pronto fazendo um CRUD por exemplo bem simples já iria ajudar…

18 Respostas

pedruhenrik

qual o erro?

eu chutaria de longe vc dar uma estudada sobre escopo de sessão e pool de conexão.

outra coisa legal seria vc analisar se alguma operação esta consumindo mt memoria d besteira, se é possível melhorar a lógica.

att,

alandiniz

intão eu tenho um livro de hibernate que explica… mais eh muito teórico… eu aprendo muito mais fácil vendo na prática… :frowning:

erro (ao vivo ^^):
http://j2vps.zapto.org/LabDiniz/index.xhtml

Hebert_Coelho
em.getTransaction.begin();

em.persist(obj);

em.getTransaction.commit();

depois do commit, faz um flush e um close.

alandiniz

Caused by: javax.persistence.TransactionRequiredException: no transaction is in progress

deu esse erro :frowning:

esse meu DaoGenerico ta errado eu acho, sei lá… ele funfa só na hora…
to precisando pegar um tutorial de um projeto certim…

Hebert_Coelho

Como ficou seu código final?

Como você está construindo seu EntityManager?

gilmaslima

Tenta fazer assim no seu Dao genérico coloca esse método

public void close() {
		if (em != null && em.isOpen()) {
			em.flush();
			em.getTransaction().commit();
			em.close();
		}

	}


// quando for fazer insert, update ou delete faça assim
em.getTransaction.begin();
em.persist(obj);
this.close();
alandiniz

gilmaslima:
Tenta fazer assim no seu Dao genérico coloca esse método

public void close() {
		if (em != null && em.isOpen()) {
			em.flush();
			em.getTransaction().commit();
			em.close();
		}

	}


// quando for fazer insert, update ou delete faça assim
em.getTransaction.begin();
em.persist(obj);
this.close();

eh cara, em partes funcionou… no meu pc funciono
mais quando eu joguei pro servidor deu erro:
http://j2vps.zapto.org/LabDiniz/

outro problema eh que cada sessão criada ta carregando muito a memória do servidor :frowning:
aff meu projeto ta totalmente fora do padrão e eu não acho nada pra corrigir isso…!!


Hebert_Coelho

Veja se você não tem algum código que não está fechando a conexão.

alandiniz

Olá jakefrog

“Veja se você não tem algum código que não está fechando a conexão.”

Bom o problema é esse mesmo, porém eu não sei como fazer para “fechar” a conexão e “abrir” quando necessário…
Meu projeto ta todo bagunçado, eu não tenho um “padrão” pra desenvolver… :S

  • com seu post, meio que “sem querer” você me ajudou :smiley: pois entrei no seu blog e vi este post: http://uaihebert.com/?p=836
    Que está me ajudando d+, pois eu gosto de trabalhar com novas tecnologias, sempre atualizado…

a unica coisa “ruim” nele de começo é que eu sou + acostumado a usar o netbeans + tomcat e você ta usando eclipse + jboss… mais tranquilo, instalei eclipse no meu linux e já estou seguindo seu tutorial, até agora tudo certo !!!

Hebert_Coelho

Maravilha então.

Do modo como está no post, quem controla a transação é JBoss, ou seja, você não vai precisar ficar abrindo/fechando a conexão.

alandiniz

Hmm entendi… por isso geralmente não tem nada nos tutoriais sobre abrir e fechar conexão… pq geralmente o pessoal usa jboss…

Meu VPS tem 2GB de memória RAM… será que o jboss não vai ficar pesado pra rodar nele?

Hebert_Coelho

alandiniz:
Hmm entendi… por isso geralmente não tem nada nos tutoriais sobre abrir e fechar conexão… pq geralmente o pessoal usa jboss…

Meu VPS tem 2GB de memória RAM… será que o jboss não vai ficar pesado pra rodar nele?


Não tenho a mínima idéia! [=

alandiniz

rsrs tranquilo… vou fazer os testes então e postar aqui o resultado =)

alandiniz

rsrs num to nem conseguindo inicia o jboss lá…

jakefrog, será que tem como esse tutorial seu eu usar o tomcat? ^^

Hebert_Coelho

alandiniz:
rsrs num to nem conseguindo inicia o jboss lá…

jakefrog, será que tem como esse tutorial seu eu usar o tomcat? ^^


Mano, para tomcat não tem como funcionar pois tomcat não implementa EJB.

Pretendo para o final do mes que vem fazer um com Tomcat. [=

alandiniz

rsrs to fora de base em teoria…

  • vlw acho que vou dar uma pesquisada em algum tutorial por ai
    e qlqr coisa ficar no aguardo do seu tutorial ^^

uma dica: usa mysql workbench, eclipse, tomcat, jsf 2, primefaces, ireport…

Hebert_Coelho

:stuck_out_tongue:

MySQL -> banco de dados é o que menos me preocupo, uso o postgres pq é o que está instalado aqui. Basta trocar o JAR que funciona.
Eclipse, Tomcat, JSF 2 -> Exatamente isso que vou utilizar.
Primefaces, Ireport -> Não pretendo para o post não ficar grade. O ideal é mostrar o básico e depois o usuário crescer com a aplicação.

Ainda pretendo lançar vários posts sobre Primefaces, mas após o post da aplicação com Tomcat.

Inté mais! \o_

alandiniz

eh realmente colocar iReport vai ficar meio grande o post…
e esse o básico do básico ja sei… rsrs

agora acho que vai ficar legal o tutorial usando eclipse + tomcat + jsf2… eu pesquisei bastante um tutorial assim e não achei nenhum até hoje!

Criado 27 de janeiro de 2012
Ultima resposta 31 de jan. de 2012
Respostas 18
Participantes 4