Só para esclarecer alguns pontos. Existem uma infinidade de frameworks Java, cada qual com a sua finalidade:
:arrow: Web: JSF, Struts, VRaptor, GWT, etc.
:arrow: DI conteiners: Spring, Guice, Weld
:arrow: Persistência: Hibernate, TopLink, iBatis,
ou seja, cada tipo de framework trabalha em uma camada diferente da aplicação. Algumas integrações são mais fáceis, outras nem tanto.
O que você precisa entender é que o gargalo da sua aplicação é o banco de dados. No caso dos frameworks Web, você podem usar qualquer um, vai depender unicamente do gosto da equipe. Para descobrir isso, a melhor abordagem é brincar um pouco com cada um deles.
Para a camada de persistência, acho que a melhor opção no seu caso é usar JDBC puro, pois como você disse, toda a sua regra de negócios está amarrada ao banco Oracle. Sendo assim,eu não vejo muito sentido em abstrair a sua camada com algum framework, até mesmo porque eu acho que nenhum framework está preparado para trabalhar desta maneira.
Por outro lado, eu abstrairia o acesso às regras de negócio com uma camada de serviços com EJB’s , aproveitando também o gerenciamento de transações de um servidor de aplicação.