Upload / Armazenamento de arquivo. Qual a melhor forma de fazer?

Caros,

Vou fazer uma funcionalidade de upload e armazenamento de arquivos em um servidor.

A aplicação deve possibilitar o upload e posterior download dos arquivos.

Eu sei que com o hibernate é facil armazenar esses arquivos no banco, mas já ouvi dizer que essa não é a melhor solução, que eu devo trabalhar com esses arquivos nos diretórios do servidor mesmo.

Alguém sabe me dizer a razão disso?

Além disso alguém tem um exemplo ou dica de como fazer da melhor forma possível isso?

Gratíssimo,
PH

Já trabalhei com as duas soluções, armazenando arquivo no banco.
Basicamente pegava o arquivo, zipava e armazenava o binário.

A outra era receber o arquivo, armazenar em um outro servidor e guardar no BD apenas o endereço para este servidor.

O que vc terá que analisar aí é questão de desempenho, outros requisitos como segurança, disponibilidade de servidor para guardar os arquivos, quem terá acesso a eles? e se for guardar no banco de dados, eventualmente terá que rodar programar para refazer índices e reorganizar as tabelas, seu bd possui esse suporte?