Olá
Estou pensando em fazer um sistema de biblioteca (apenas para estudo, nada comercial) que tenha empréstimo, banco de dados(lógico),cadastro de livros com chave estrangeira para a editora e autor.
Meu problema é: Nunca fiz algo assim tão complexo (e estou cheio de fazer métodos doStuff() do livro da kathy) e da última vez que fiz algo assim, foi uma agenda e tive que refazer o banco de dados ( e consequentemente o programa) dezenas de vezes. Sem exagero.
Então,
Do que eu vou ter que tomar cuidado?(AINDA não sei hibernate nem outra framework)
Como terão que ser as tabelas?
Como farei para o programa usar as foreign keys?
bem, eh importante o hibernate ou outro framework de persistencia, ele eh bem simples nada que em algumas horas consiga matar o suficiente para fazer o que precisa so para essa aplicacao.
Fazer uma aplicacao como essa sem relacionamento nas tabelas, eh um tiro no pé, gastará horas e mais horas, sem exagero, na manutencao e ate no desenvolvimento.
antes de pensar em programa, descreta os requisitos em um papel, desenhe os relacionamentos, imagine o que acontece quando vc vai na biblioteca da faculdade pedir um livro por exemplo?
Para usar o fk, caso use somente hibernate fará isso no mapeamento, se usar JPA tem os annotations para isso. Vc tb pode gerar a partir do BD seu mapeamento hbm.xml, usando o hibernate tools veja neste post.
P.S: vejo uma boa oportunidade de aprender os frameworks que sao bem requisitados nas vagas: JSF e hibernate, eu no seu caso mandava bala, usando as tecnologias citadas, eh uma forma de aprendizado, que sentirá na veia e podera aprender com os erros, alias aprendera mais com os erros do que com os acertos.
Existem diversos jeitos de se comecar uma aplicacao. Tem gente que prefere pensar em “relacional”, tem gente que prefere pensar em “orientacao a objetos”. Ambos estao certos Descubra o jeito que eh mais confortavel para voce.
Eu prefiro modelar via “orientacao a objetos”, ou seja, eu faco primeiro minhas entidades JPA, colocando as anotacoes nos devidos lugares. Depois, eu deixo que o Hibernate crie as tabelas para mim (propriedade “hibernate.hbm2ddl.auto”) e soh ajusto uma coisa ou outra no DDL, se for preciso.
Mas para mim, o mais importante eh “desenhar” o sistema antes. Use um pedaco de papel para desenhar as telas (ou use o http://gomockingbird.com/ , que tb eh de boa ajuda). Com isso, vc pode identificar quais propriedades vc precisa, onde vc vai usa-las, como vai mostra-las na tela, e por ai vai. Isso vai ajudar a tomar decisoes na hora de fazer o codigo pra valer.