Olá Rsdata, tudo bem?
As anotações @JoinTable são usadas para mapear uma relação ManyToMany entre duas entidades. No seu exemplo, a entidade Funcionario tem uma relação ManyToMany com a entidade UnidadeTrabalho.
A anotação @JoinTable é usada para definir a tabela intermediária que será criada para armazenar essa relação. No seu exemplo, a tabela intermediária será chamada de "funcionarios_unidades".
O parâmetro joinColumns é usado para definir a coluna que faz referência à entidade Funcionario na tabela intermediária. No seu exemplo, a coluna será chamada de "fk_funcionario".
O parâmetro inverseJoinColumns é usado para definir a coluna que faz referência à entidade UnidadeTrabalho na tabela intermediária. No seu exemplo, a coluna será chamada de "fk_unidade".
Por fim, a lista de UnidadeTrabalho na classe Funcionario será mapeada para a tabela intermediária através da anotação @JoinTable.
Espero ter ajudado a esclarecer suas dúvidas. Bons estudos!