Entidades (classes) com SQL

9 respostas
R

Tenho uma duvida ha tempos, e agora que estou adentrando a fundo o mundo Java gostaria de tira-la!

seguinte, quando tenho minhas classes como entidades:
Cliente, Fornecedor, Nota, esse tipo de coisa

como é a maneira mais correta de trabalhar na hora de persistir os dados?

pensei da seguinte forma

ao incluir, crio um objeto novo, seto os atributos e chamo um metodo incluir que irá fazer um insert no banco, estou certo?

ao pesquisar, pensei em um metodo estatico que instancia e tras os valores dos atributos ja setados, esse metodo estatico tem que estar dentro da classe em questão? tem como eu ter um metodo estatico que cria uma instancia da propria classe? qual a melhor maneira de uma procura?

ao alterar, pensei em ter atributos privados indicam se cada atributo foi alterado, ao chamar o metodo alterar() faço um update só dos campos que foram alterados. certo?

e os relacionamentos como faço?
se alguem tiver algum exemplo, ou qualquer dica que me ajude, por favor…
fico muito grato.

9 Respostas

Jair_Rillo_Junior

Ola,

Você quer trabalhar com Classes/Objetos que irão fazer persistência no banco de dados certo? Assim você tem que esquecer grande partes do SQL (Insert/Update/Delete) e pensar apenas em objetos,objetos e um pouco de objetos…

Primeiro passo é saber trabalhar com Java Bean. Aqui é simples, você cria suas classes com os atributos que serão gravados na tabela no banco de dados, criando também seus métodos setters e getters.

Agora para fazer a persistência de um modo prático, rápido, seguro e divertido, você pode usar uma ferramenta de camada de persistência já pronta. Estude o Hibernate, Aqui No GUJ também tem um artigo mostrando seu funcionamento básico http://www.guj.com.br/user.article.get.chain?page=1&article.id=7

caiofilipini

Existe um Pattern pra isso, chamado Transfer Object:

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

[]'s

R

A questão é que vou usar PostgreSQL com o conceito de herança do banco!
E vou usar PL/PgSQL, portanto preciso trabalhar com SQL, pois a maioria dos meus metodos vão estar no PostgreSQL, só vou chamar pelo Java.
estou pensando nas classes como JavaBeans, com getters e setters, mas preciso de metodos atualizar, consultar e incluir certo?
não posso complicar muito o lance, é meu Trabalho de Graduação. Quero fazer de maneira simples e eficaz.
A questão é, se eu usar essas camadas de persistencia ja prontas, vou poder usar herança no postgre? acho que não né?

mesmo assim valeu pelas dicas, vou dar uma pesquisada

pcalcado

O sistema é legado?

Se não for, não acha que seria melhor você projetar seu sistema utilizando objetos e depois projetar como estes objetos são persistidos no banco? Isto de projetar o banco de dados junto com a aplicação era muito comum em ANálise Estruturada, porque um registro é facilmente transferido à um SGBD, e ao mesmo tempo as relações entre eles no SGBD eram mais poderosas do que no programa.

Já que vai olhar Transfer/Value Object, olhe o link pro DAO. :wink:

[]s

R

justamente!
o que estou pensando é o seguinte!

na parte que estou do projeto, estou analisando e modelando utilizando UML!

então tudo vai ser pensado utilizando OO.

o que penso é em não chegar na hora de implementar e não saber como.

a questão do postgre é o seguinte, TGs (trabalhos de graduação) tem que ter alguns diferenciais, e quero utilizar a herança do postgreSQL e as stored Procedures.

por isso que ja to vendo como utilizar, achei muito interessante o hibernate, mas dessa forma nem vou mecher com o SQL, o que pode ser muito interessante também. Porém queria ainda utilizar esses recursos do Postgre

pcalcado

Bom,

1 - Sobre o uso de SPs, estamos discutindo agora mesmo, neste tópico aqui, ó. Dá uma olhada, pdoe ser útil. :wink:

2 - Entendo a questão do diferencial, só que você vai estar usando uma técnica não muito recomendada. Umas das questões discutidas no tópico acima é de que você as vezes precisa usar SPs por desempenho, mas que isto não é " o certo" [se é que existe algum certo!]. Como você vai ser avaliado por isto por uma banca de profissionais, não pelo cliente que só quer que a consulta dele seja executada rápidamente, acho que não seria muito legal isso não.

3 - Este texto é muito bom sobre este tópico.

4 - Que inovar? Que tal Prevalência? Não é nada tããão inédito assim [um monte de trabalho de graduação por aí tá usando], ams também não é tão comum. De repente você faz algo diferente com base nele, sei lá. Tente:

[]s

R

pensei no Prevayler mesmo, estou estudando a possibilidade.

o que acham de usar preparedstatement nas minhas classes?
assim tiro o codigo sql das minhas classes!

pcalcado

Bom, o problema em si não é SQL, mas lógica de aceso à persistência, seja um banco de dados, flat file, xml, sei lá.

Obviamente você não vai conseguir se livrar completamente deste tipo de coisa sem um projeto radical [para os padrões de hoje], então você pdoe utilizar coisas como DAO para facilitar a separação do que é lógica e do que é acesso a dados, pesquisa, etc.

Acho que recentemente foi falado aqui no GUJ sobre isto [SQL x Prepared], dê uma pesquisada aê :wink:

[]s

R

Valeu vou pesquisar.

Criado 28 de abril de 2004
Ultima resposta 30 de abr. de 2004
Respostas 9
Participantes 4