Opens Session in View vs Sigleton

Pessoal estou com uma duvida que ja bati varias vezes a cabeca e nao to conseguindo exergar a diferença em se aplicar o padrão Open Session in View para uma conexao em um sistema para a criação de um classe Singleton que mantem apenas um conexao para ser utilizada por varios usuarios.

Alguem poderia me citar a diferenca das duas arquiteturas e as vantagens de se utilizar o Open Session in View.

Valeu pessoal

Vou tentar responder isso sem te gerar mais duvidas, vamos la. O padrao open session in view eh usado em conjunto com hibernate, consiste basicamente em manter a sessao do hibernate aberta durante uma unidade de trabalho, ou seja entre requisicao e resposta http. Ele eh implementado normalmente como um filtro servlet. Utilizando isso voce consegue evitar os famigerados lazy exceptions, visto que vc podera navegar no seu grafo de objetos em qualquer camada, inclusive na view(proposito do padrao) utilizando expression language(Por exemplo no Jsf : #{controladorPessoa.pessoa.telefones} , onde telefones foi mapeado lazy), ja que a sessao do hibernate nao foi fechada ate a renderizacao da view. Ele eh usado para sistemas implementados em uma jvm, apartir do momento em que vc separa seu sistema em mais jvms( por exemplo move a camada de apresentacao para outro servidor) ja nao sera mais uma boa estrategia. Outra desvantagem eh q vc sempre abrira uma sessao hibernate, mesmo quando nao for precisar fazer uma operacao banco de dados.
Se voce ao dizer utilizar osiv para conexao estiver se referindo em abrir sempre uma nova conexao db no filtro servlet , sera uma pessima ideia visto a toda requisicao passara pelo filtro e vc tera uma nova conexao. Ao utilizar singleton vc tera sempre a mesma conexao todas as vezes que precisar, funciona bem para sistemas desktop, ou na fase de desenvolvimento, mas a partir do momento em que for para producao e for uma aplicacao multithread (web) utilize um pool de conexoes, este mantera as conexoes abertas em uma estrutura de dados e sempre quando vc requisitar uma conexao, ele reaproveitara uma ja aberta, se todas estiverem sendo utilizadas, ele criara uma nova (Ex o DBCP commons da apache).

Espero ter ajudado.

obrigado pela resposta acho que entendi… vou analisar novamente a arquitetura que o livro esta propondo aqui e volto a postar duvida a respetito deste topico