Técnico

SQL nativa no Hibernate e beans não gerenciados

Em projeto recente foi necessário requisitar objetos em um banco legado os quais não eram entidades gerenciadas pelo Hibernate mas sim por outro software.

Mapear estes objetos como novas entidades e criar Criteria’s ou HQL’s com base em SQL’s prontas enviadas pelo cliente seria custoso. Como o projeto não era resposável por manter estes objetos sincronizados com o banco, seria interessante utilizar as SQL’s prontas em beans não gerenciados pelo Hibernate.

Após pesquisar na documentação do Hibernate, achei uma solução interessante caso seja necessário utilizar SQL nativa:


public List getUsers() {

SQLQuery query = session.createSQLQuery("select DS_NAME as name, DS_DESCRIPTION as description, ST_AGE as age from t_users");

query.addScalar("name");
query.addScalar("description");
query.addScalar("age", Hibernate.LONG);

query.setResultTransformer( Transformers.aliasToBean( UserDTO.class ) );

List users = query.list();
return users;

}


public class UserDTO {

private String name;
private String description;
private Long age;

//getters n' setters

}

Native SQL Chapter: http://www.hibernate.org/hib_docs/reference/en/html/querysql.html

2 Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Compartilhe isso: