Usando Threads para consulta com Hibernate

Gostaria de saber qual a forma mais “correta” (ou padronizada) de se utilizar threads para consultas com Hibernate.
A situação é a seguinte:
Tenho uma Janela Swing, as classes de negócio e as classes DAO. Porém, consultas muito demoradas podem “congelar” a GUI, uma vez que os metodos minhaClasse.buscar(“nome”) estão sendo chamados na thread da GUI. Qual a seria uma maneira (algum padrão) de se separar essas consultas em uma thread própria.