Spring DAO vs Spring ORM vs Spring JDBC

Eu estava passando por tecnologias de acesso a dados suportadas pelo Spring, e notei que ele menciona várias opções e não tenho certeza sobre a diferença entre elas:

Spring-DAO (http://docs.spring.io/spring/docs/2.0.8/reference/dao.html)Spring-ORM (http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/orm.html)Spring-JDBC (http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html)

Pelo que entendi, o Spring JDBC fornece modelos para reduzir o código padrão para acessar um banco de dados da maneira antiga e simples - você escreve suas próprias consultas SQL.

O Spring-ORM fornece modelos simplificados para acessar bancos de dados através de tecnologias ORM, como Hibernate, My (i) Batis etc.

Spring-DAO conforme o site da Spring:

O suporte a Data Access Object (DAO) no Spring visa facilitar o trabalho com tecnologias de acesso a dados como JDBC, Hibernate ou JDO de maneira consistente.

Sou um pouco claro sobre ORM vs JDBC, pois eles visam diferentes maneiras de acessar o banco de dados. Mas o Spring-DAO é simplesmente confuso!

Alguém poderia esclarecer quais são exatamente as diferenças entre esses três? Qual deve ser preferido em quais cenários?

Além disso, há outro projetoSpring-DATA também disponível (http://projects.spring.io/spring-data/) Agora, é um tipo de projeto pai para todos os técnicos de acesso a dados suportados pelo Spring ou é apenas um novo nome para o Spring-DAO?

questionAnswers(5)

yourAnswerToTheQuestion