Tenho uma classe que tem um atributo de data e um GenericDAO, faço uso da anotação @Entity para informar o nome da tabela, porém o nome dessa tabela segue o padrão: NOME_TABELA_YYYYMM, exemplo:
E assim por diante, é possível gerar o nome da tabela em tempo de execução conforme o valor da data que está no objeto? Se sim, como eu poderia implementar? O que devo estudar? Pesquisar? Teriam algum exemplo?
Bom, o hibernate utiliza duas estratégias diferentes para geração de tabelas, a primeira é o nome da classe, a segunda, a annotation @Table, propriedade name.
Acontece que, como você deve saber, os valores que podem ser definidos para as propriedades de uma annotation devem ser estáticos.
Mas, fazendo algo que não sei se você fez, ou seja, pesquisando, encontrei algo sobre hibernate dynamic models que pode ajudar.
Outra opção, com certeza, é deixar de lado o framework e lembrar que não existem balas de prata e, em várias situações, o melhor é ir para o java básico e fazer na mão o que se necessita.
D
dgobrito
Olá drsmachado,
Eu havia pesquisado e tinha encontrado informações sobre Naming Strategy, com o link que você passou, percebi que nos métodos save, merge, delete e demais métodos é possível passar o parâmetro entityName.
Obrigado!
Essa tabela deve ser criada somente quando for utilizada, é possível no hibernate criar em tempo de execução?
Solucao aceita
drsmachado1 like
Eu nunca precisei disso, na realidade, acho até um anti pattern, pois isso é um dever do DBA, afinal, novas tabelas interferem na performance do banco de dados, consumo de disco e etc e estes são fatores que podem interferir e muito em todas as aplicações envolvidas. Em geral, cria-se um job ou alguma procedure que trate disso. Talvez dar uma olhada no pentaho ou similares, que também tem essa prerrogativa.