Eu comecei a fazer minha aplicação 100% JDBC, mas como decidi que teria que aprender Hibernate mais cedo ou mais tarde resolvi migrar no meio do projeto, mas estou tendo alguns problemas.
1 - Como eu crio o banco via Hibernate? Pois eu criava com JDBC e começou a dar um erro estranho. Algo do tipo “the application must supply JDBC connections”, e um amigo disse que eu deveria escolher apenas 1 API pra trabalhar… Ou 100% JDBC ou 100% Hibernate, mas eu não sei como eu crio o banco por Hibernate. Eu pesquisei sobre a propriedade hbm2ddl.auto, mas ainda não entendo como utilizá-la.
2 - Eu estou trabalhando com perfis. O usuário escolhe um perfil, e cada perfil tem um banco de dados próprio, que eu gostaria que o Hibernate criasse quando um perfil é cadastrado pelo usuário. O problema é que isso geraria várias URLs diferentes na hora de configurar o Hibernate, o que não é possível fazer com um .xml. Como eu poderia fazer pra configurar a URL dinamicamente a partir de uma variável (perfilAtual) que eu tenho em todos os meus JFrames?
Porque dessa foram não está funcionando, só funciona se eu deixo “.configure()”, sem o arquivo que eu desejo utilizar. E eu precisava definir qual arquivo de configuração eu quero usar, porque na hora de cadastrar perfis eu estou usando outro XML chamado “creation.cfg.xml”, que seta a propriedade.
O meu problema é exatamente esse… eu quero que O HIBERNATE CRIE O BANCO… pois cada perfil que o usuário criar vai usar um banco diferente… então independe de mim, depende da APLICAÇÃO EM SI a criação da base de dados, entende?
E o que faz o “hibernate.hbm2ddl.auto” como update ?
pq vc vai ter um Database ja configurado no hibernate.cfg.xml
e vc esta me falando que ele vai criar bancos? estranho
desse jeito que eu te enviei ele vai adicionar tabelas conforme vc vai criando entidades persistidas
mas em todo caso:
segue abaixo as opções
hibernate.hbm2ddl.auto create-drop – Esse cria mas depois que vc encerra o servidor ele exclui esse é mais voltado para teste
hibernate.hbm2ddl.auto create —Esse é o cara que cria
hibernate.hbm2ddl.auto update
hibernate.hbm2ddl.auto validate
Eu preciso que cada usuário que se cadastre tenha conteúdo próprio, e eu achei que a melhor forma de fazer isso fosse criar uma pasta e um banco separado pra cada um. Mas eu não sei como fazer uma configuração dinâmica pro Hibernate pra ir mudando a URL conforme o perfil que o usuário escolhe muda, entende?
Tipo, eu o joão e a maria se cadastram. Quando o joão entra ele tem que ver só as coisas que ele fez no programa, e o mesmo pra maria, então eu pensei em criar 2 bancos. Tem forma melhor de fazer isso? com 1 só banco?
Pelo que eu acabei de entender
vc quer o seguinte:
Cada usuario que se cadastrar vai ter seu perfil e suas coisas
ou podera add coisas novas ao longo do tempo.
Tira essa ideia de criar um banco para cada um usuário
vc vai ter que trabalhar permissão…
assim qdo o usuario logar ele vai ter acesso a isso e aquilo
dependendo do seu papel(Role) dentro da sua aplicação.
Certo. É exatamente isso que eu quero fazer, só não sei como fazer. Tipo eu posso ter 2 usuários cadastrando o mesmo produto, como eu faria pra discriminar qual produto é de quem NA MESMA TABELA? Valew aí!
Eu só gostaria que alguém me informasse claramente como criar o banco com o Hibernate, pois é o que terá que acontecer caso eu deseje distribuir a aplicação. Eu precisaria que a própria aplicação gerasse o banco.
No início da aplicação eu verifico se já existe um banco de dados criado, se não existir, tem como eu configurar uma fábrica com “creation.cfg.xml” (que usa hibernate.hbm2ddl.auto create) pra criar, e daí em diante usar o “hibernate.cfg.xml” com hibernate.hbm2ddl.auto update só pra gerenciar o banco?
Porque quando eu faço
ou
ele diz que não encontra um driver “suitable”.
Mas quando eu faço
(sem nada de parâmetro) ele funciona, suponho que ele crie pelo “hibernate.cfg.xml” como padrão.
Bom… Muito obrigado.
Infelizmente não serviu, porque o dele é pra Web, e eu não entendo nada de Java voltado para Web hehe
E ele também usou Annotations que eu não sei usar.
Mas eu optei por adicionar um atributo/campo “usuário” nas tabelas pra descriminar o que é de quem.
Muito obrigado pela ajuda!