GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Comunicação com Banco de Dados Firebird

java
Tags: #<Tag:0x00007f3baf52c898>

#1

Bom dia a todos. Pessoal eu tenho uma aplicação em Delphi mais Firebird mas estou tentando ajustar ela para Java Web. Meu problema está na hora de comunicar com o banco de dados onde a todo momento tenho que destruir o banco de dados e refazer de novo, o que com certeza se no futuro eu tiver que fazer alguma alteração no banco de dados não irei poder fazer .
A minha estrutura atual para criação das tabelas no banco de dados é a seguinte :

image

image

O que tenho observado é que para toda vez que eu tenho que criar uma tabela no banco eu tenho que mexer na linha

image

Alterando ela para true ou para False. Pesquisando sobre o assunto parece que tudo indica que eu tenho que informar alguma coisa no Hibernate parecido como o abaixo , pois pelo que eu entendi eu tenho que informar como que o framework vai trabalhar .

Alguém consegue me dar uma ajuda de como posso estar concluindo esta configuração da forma correta ?


#2

Sim e qual a novidade em ter que dizer ao framework o que fazer?
É o comportamento de qualquer framework que não possui um padrão (como o Spring Boot, com o @ComponentScan, por exemplo).
Era apenas esta a dúvida?


#3

Opa. Não @darlan_machado . O problema é que toda para que que possa criar uma nova tabela, eu tenho que destruir tudo e recriar novamente, pois se eu não mexer na linha adaper.setGenerateDdl(false) para true, ele não cria as tabelas que eu preciso.

Com certeza tem alguma coisa de errado neste método que vai comunicar com o banco de dados e criar as tabelas que eu preciso.
Por exemplo : Se eu precisar adicionar um campo a mais em uma tabela, estou tendo que dar um drop nela , mexer na instrução da linha acima para true e ai a tabela vai ser criada novamente.

Observe que em nenhum momento eu informo aqueles schema de Update ou Create Dop.


#4

Eu não costumo usar o hibernate com configuração programática.
Prefiro utilizar o arquivo hibernate.properties, odne posso setar a propriedade

hibernate.hbm2ddl.auto=update

Que não destrói as tabelas anteriores, apenas adiciona (sim, só adiciona) as mudanças efetuadas desde a última sessão carregada.


#5

Bom dia a todos.
Pessoal , consegui fazer a comunicação com banco de dados através do aplication.properties
A configuração para comunicação do mesmo está logo abaixo :

image

Devemos levar em consideração aqui que o banco de dados seria criado por um DBA e eles iria disponibilizar o nome da tabela e o nome dos atributos no modo relacional.
Um outro detalhe é que a definição das entidades devem ser identicas com o que está dentro do banco de dados.


#6

Quando isso ocorre, não utilize a propriedade hbm2ddl.auto

Não precisa.
Você pode fazer uso da anotação @Table e definir o valor da propriedade name com o mesmo nome da tabela

@Entity
@Table(name = "TABELA_COM_UM_NOME_COMPLICADO_QUALQUER")
public class Foo {}

E, caso você se refira aos atributos, use a anotação @Column e defina como valor da propriedade name o mesmo nome da coluna

 @Column(name = "UM_NOME_COMPLICADO_PARA_UMA_COLUNA_QUALQUER")
 private String nome;

#7

Apenas complementando o que o @darlan_machado disse realmente funciona como ele disse. Inclusive fui indicado a fazer conforme ele falou por se tratar de uma boa prática.
Depois de fazer as simulações ficou conforme abaixo :

image

Observe que o nome da tabela está com a anotação e a descrição em java está mais clara do que pode ser.