O PostgreSQL suporta linguagens de procedimento conectáveis e existe um projeto para estender o PostgreSQL com PL/Java como a linguagem.
Eu não recomendo colocar muito código no RDBMS. Ferramentas para desenvolver, testar e depurar código na camada de aplicação são melhores do que ferramentas para código no RDBMS.
Além disso, muitos desenvolvedores não entendem que o código dentro do RDBMS deve obedecer ao isolamento da transação. Eles tentam enviar e-mails de gatilhos e assim por diante. Acho que o código com efeitos colaterais deve estar na camada do aplicativo, para que você não crie efeitos fantasmas (por exemplo, um email pode notificar uma alteração no banco de dados, mesmo que a alteração tenha sido revertida).