Hibernate independente de Banco de Dados

5 respostas
palmeirensedf

Ola, Pessoal

Alguém sabe me dizer se é possível deixar o código independente do banco de dados com a utilização do Hibernate?
O que quero dizer com isso? Quero que minha aplicação rode normalmento quando ocorrer a mudanção do banco de dados, exemplo Posgresql para Mysql, sem alteração das classes Beans(.java) e arquivos de configuração do hibernate (.xml).

Agradeço a atenção.

5 Respostas

P

o hibernate é usado pra isso…
só que o xml vc vai ter q alterar… é o ambiente isso =)

mynameisflaw

Se você tiver um bom DBA, capaz de portar o banco nos minimos detalhes e utilizar uma geração de chaves generica (utilizo a anotacao @GenericGenerator, nao sei como é em HBM) você consegue portar sua aplicação alterando apenas suas configurações de conexão, e adicionando o driver específico ao classpath, é claro :slight_smile:

Uma sugestão: evite ao máximo utilizar sql nativas, e se usar, documente.

abraços

O

Ao inves de utilizar o arquivo xml para informar o servidor, naum teria como em uma tela informarmos: o driver, nome ou ip servidor, nome banco ?? tudo isso dinamico para poder para poder configurar a classe Persistence para depois fabricar meu entitymanager

mynameisflaw

Vocẽ pode criar um recurso JNDI no seu application server retornando um datasource.

att.

palmeirensedf
palmeirensedf:
Ola, Pessoal

Alguém sabe me dizer se é possível deixar o código independente do banco de dados com a utilização do Hibernate?
O que quero dizer com isso? Quero que minha aplicação rode normalmento quando ocorrer a mudanção do banco de dados, exemplo Posgresql para Mysql, sem alteração das classes Beans(.java) e arquivos de configuração do hibernate (.xml).

Agradeço a atenção.

Dúvidas iniciais esclarecidas. O que fiz para deixa portável? Coloquei tudo que tem haver com o Banco de Dados no .xml do Hibernate que antes usava na class Bean, evitando assim de alterar todos os Beans quando migrar de db. (ufffaaaa, me livrei disso :lol: )
<session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/postgres</property>
    <property name="hibernate.connection.username">postgres</property>
    <property name="hibernate.connection.password">12345</property>
    <property name="hibernate.use_sql_comments">true</property>
    <property name="hibernate.default_schema">segurancacti</property>
    <property name="hibernate.default_catalog">postgres</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <mapping class="bean.TbSistema"/>
  </session-factory>
E para a criação das pk usei o strategy increment do generated para que o hibernate faça todo o trabalho da incrementação da pk.
@Entity
@Table(name = "tb_sistema")
public class TbSistema implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(generator = "pkid_sistema")
    @GenericGenerator(name = "pkid_sistema", strategy = "increment")
    @Column(name = "id_sistema", nullable = false)
    private Integer idSistema;
Agora queria saber a diferença de performance entre a strategy native e increment? Ou se existe outra solução onde o impacto na perfornance sejá menor?
Criado 30 de abril de 2010
Ultima resposta 1 de mai. de 2010
Respostas 5
Participantes 4