Pular para o conteúdo principal

Fetch Profile nova funcionalidade do Hibernate 3.5

No final de Março foi lançado Hibernate 3.5, framework Mapeamento Objeto Relacional mais "badalado" do Java.

A grande expectativa dessa versão é justamente por a partir dela o Hibernate torna-se uma implementação da JPA 2.0. A JSR 317 especificou recursos já existentes no Hibernate com novas funcionalidades dando uma cara nova ao mecanismo padrão para ORM em aplicativos Java.

Mas além da compatibilidade a JPA 2.0, o Hibernate conta com algumas melhorias como o suporte a JDBC 4 (Java 6), junção dos projetos Hibernate Core, Hibernate Annotations, Hibernate EntityManager e Hibernate Envers. Fechando com novas funcionalidades como o Fetch Profile.

Via de regra, mapear as associações com fetchType usando Lazy não faz mal a ninguém, principalmente em relacionamentos que envolvem collection como @OneToMany e @ManyToMany. Uma solução comum para carregar mais de uma entidade em única busca no banco é utilizar join fetch via HQL, ou mesmo via Criteria.

A partir do Hibernate 3.5, com o Fetch Profile isso pode ser feito de uma forma diferente e bem simples. No mapeamento é necessário indicar a entidade, o relacionamento/atributo que deve ser carregado e por fim um nome para o Fetch Profile. Vou usar o clássico exemplo Pedido com um Cliente e vários Itens para demonstrar o uso, código está bem reduzido com foco em Fetch Profile:
@FetchProfiles(value={
    @FetchProfile(name="pedido-com-cliente",
        fetchOverrides=@FetchProfile.FetchOverride(
            entity=Pedido.class,
            association="cliente",
            mode=FetchMode.JOIN)
    ),

    @FetchProfile(name="pedido-com-itens",
        fetchOverrides=@FetchProfile.FetchOverride(
            entity=Pedido.class,
            association="itens",
            mode=FetchMode.JOIN)
    )
})

@Entity
public class Pedido {

    // mapeamento dos outros atributos foram omitidos ...
    
    @ManyToMany(fetch=FetchType.LAZY) //o default eh EAGER
    private Cliente cliente;

    @OneToMany(fetch=FetchType.LAZY)
    private Set itens = new HashSet();

    // getters, setters e outros metodos foram omitidos ...
}


Observação: caso exista só um @FetchProfile, não é necessário definir @FetchProfiles.

Agora é só habilitar o Fetch Profile na Session indicando pelo nome, através do método setFetchProfile. Uma vez que esse método é acionado, enquanto a Session for utilizada o Fetch Profile será respeitado.

A seguir trecho do codigo do PedidoDAO usando usando esse esquema:
//busca comum, nesse caso soh na tabela Pedido
Pedido p1 = (Pedido) session.get(Pedido.class, 4); //existe pedido com id 4

//habilita busca (get) do pedido com itens
session.enableFetchProfile("pedido-com-itens");

//gera sql para tabela Pedido com left outer join em ItemPedido
Pedido p2 = (Pedido) session.get(Pedido.class, 7); //existe pedido com id 7


Na sequência faço um ajuste no código anterior, habilitando a busca do Cliente junto com os Itens.
//habilita busca (get) do pedido com itens
session.enableFetchProfile("pedido-com-itens");

//gera sql para tabela Pedido com left outer join em ItemPedido
Pedido p2 = (Pedido) session.get(Pedido.class, 7); //existe pedido com id 7

//na mesma session, habilita busca (get) do pedido com cliente
session.enableFetchProfile("pedido-com-cliente");

//gera sql para tabela Pedido com left outer join com ItemPedido e Cliente
Pedido p2 = (Pedido) session.get(Pedido.class, 7); //existe pedido com id 7


Para desabilitar o Fetch Profile é só chamar o método disableFetchProfile da Session. Por enquanto o formato da busca é via JOIN, as outras opções devem sair junto com Hibernate 3.7.

Depois de quase 10 anos, o Hibernate começou a ser criado em 2001, é possível melhorar!


Mais informações:


[]'s
Eder Magalhães
www.yaw.com.br
twitter.com/youandwe
twitter.com/edermag

Comentários

Muito legal, aumenta a glanularidade da configuração de forma simples!

Postagens mais visitadas deste blog

12 ESQUENTAS TDC ESPERANDO POR VOCÊ

O TDC nasceu do sonho de profissionais que valorizam o compartilhamento de conhecimento, experiências e oportunidades entre as comunidades de desenvolvedores.  Por isso, o crescimento do TDC nunca poderia ficar longe do crescimento das comunidades! Pensando nessa união, criamos um projeto quente: O ESQUENTA TDC ! Visando divulgar os meetups de comunidades que querem transformar e inspirar carreiras, foi co-criado este projeto lindo e cheio de apoio, onde o TDC abraça meetups de diversas comunidades espalhadas pelo Brasil e elas contribuem com a divulgação da edição regente.  O TDC Innovation vai rolar de 14 a 16 de JUNHO, mas até lá vão acontecer muitos encontros incríveis!  Fique por dentro das comunidades que vão participar, quais temas irão abordar e claro as datas e locais para você participar. 💥Esquentas TDC Innovation 2023: 24/05 - Esquenta TDC: Carreira e Desenvolvimento Presencial em Floripa das 19:00 as 21:30 com inscrição AQUI Comunidade: Google Developers Groups Nova

TDC INNOVATION lança University Pass

Modalidade de ingresso tem como objetivo ajudar na capacitação dos universitários Uma pesquisa realizada em 2020 pela Associação Brasileira das Empresas de Tecnologia da Informação e Comunicação (Brasscom) diz que até o ano de 2024 o Brasil precisará de cerca de 420 mil profissionais na área de Tecnologia da Informação. Porém, por ano, a mesma pesquisa diz que o país forma apenas 46 mil profissionais capacitados no nicho. Pensando nisso, para ajudar na formação e capacitação desses jovens profissionais, o TDC INNOVATION, segunda edição do ano do The Developer's Conference, lança o University Pass, modalidade de ingresso que possibilita aceso digital gratuito a todas as palestras do evento, ou com 50% de desconto para quem preferir ir pessoalmente. Com o tema central “Desafios para a criação do futuro Digital”, o TDC INNOVATION ocorrerá entre 1 e 3 de junho, de forma híbrida: presencialmente no Centro de Convenções CentroSul, em Florianópolis, e com transmissão simultaneamente pela

Palestras do TDC Business Disponíveis Online

🚨 Atenção, TDC Lovers! O TDC Business em São Paulo acabou, mas os conteúdos mal começaram!  Não pô de aproveitar a STADIUM ao vivo? Não tem problema, porque trouxemos ela até você. Todas as palestras da STADIUM, palco principal do TDC, já estão no ar e liberadas para qualquer pessoa assistir. Essa Trilha incrível conta com palestras de Trilhas Premium e temas variados de forma GRATUITA para você poder maratonar de casa!  Aproveite para prestigiar seu evento de TI favorito com pipoca direto do seu sofá. 🎥 🍿 Gravação da STADIUM, 22 a 24 de Agosto de 2022, disponível aqui: https://www.globalcode.com.br/videos/tdc-2022-business/  Todas as demais trilhas do TDC Business serão publicadas gradualmente nas próximas semanas, fique atento aos nossos e-mails, você será notificado por lá quando sua Trilha estiver disponível. Acompanhe nossas redes sociais para não perder nada e ficar por dentro de todas as novidades do TDC!

Inspire a mudança com a liderança ágil

A liderança ágil é essencial para que uma organização realize mudanças de negócios significativas. Ser líder é uma tarefa desafiadora, especialmente em um cenário de constantes transformações, principalmente na forma de lidar com a relação empresa e pessoal. Pesquisas sobre liderança na era digital revelam que algumas soft skills têm sido substituídas por outras, o profundo conhecimento na área de negócio, ser referência nas tecnologias utilizadas, ter foco total no prazo e nas entregas e conhecer um arsenal de técnicas e ferramentas, têm dado espaço a habilidades, como: empatia; adaptabilidade; senso de equipe; visão e propósito; engajamento constante. A colaboração entre pessoas de todos os níveis hierárquicos são vitais, afinal, as equipes estão trabalhando para o mesmo objetivo: o encantamento e atendimento das necessidades do cliente que proporcionarão um crescimento sustentável da organização. Com propósito claro, estratégia e prioridades definidas, os times desfrutam de uma ma

TDC Digital: o que você precisa saber para transformar sua carreira em 2022

O TDC Digital é o maior evento de TI do mercado e proporciona crescimento profissional a partir de palestras com especialistas e oportunidades de networking com o mundo todo, direto da sua casa. Através da escolha individual de cada participante é possível obter experiências imersivas e transformadoras conforme o tema-chave de cada trilha.  O evento também é o lugar ideal para ajudar no desenvolvimento de carreiras, permitindo que qualquer pessoa com vontade — e um tema interessante — seja palestrante e compartilhe suas experiências e conhecimentos. Para aqueles que querem  participar como ouvinte a plataforma do TDC favorece conferências dinâmicas, e o encontro de diversas comunidades e ecossistemas de TI. E, após a escolha de uma trilha, fica mais fácil acompanhar especialistas para aprender e se inspirar. Em 2021 , o The Developer’s Conference (TDC) foi 100% digital e, em três dias de evento, contou com mais de 300 horas de conteúdos , incluindo: Agile; Testes; Design; Web e Mobile;

TDC ONLINE: SUA PLATAFORMA DE PALESTRAS GRAVADAS DO TDC DISPONÍVEL

Além do conteúdo ao vivo transmitido online nas edições do TDC, agora você pode ter acesso à centenas de palestras gravadas, através da nossa nova plataforma de vídeos - o TDC Online, que reúne todas as Trilhas premium, Stadium e Salas dos Patrocinadores das edições anteriores de 2022, TDC Innovation e TDC Connections.  Para acessar, basta clicar na edição em que você participou ( TDC Innovation ou TDC Connections ); Fazer o mesmo login (com e-mail e senha) cadastrados na hora de adquirir ou resgatar o seu ingresso no TDC; E clicar na Trilha de sua opção, e de acordo com a modalidade do seu ingresso. Logo em seguida, você será direcionado para a seguinte página com a lista de todas as palestras por Trilha: Pronto! Agora você tem acesso à centenas de palestras gravadas da sua área de interesse, para assistir como e quando quiser! Caso tenha esquecido a senha, clique na opção "Esqueci a senha" , insira o e-mail que você realizou para o cadastro no evento, e aparecerá a op