Se o Repository está servindo bem a você, continue usando-o. Esqueça o “que é melhor”. Conforme você for se acostumando a desenvolver e utilizar os padrões, você mesmo vai criticá-los.
O DAO nada mais é do que uma camada de acesso aos seus objetos de dados a fim de fazer com que você encapsule essa função, não expondo detalhes de sua persistência para seus services.
Se você está trabalhando com EntityManager da JPA, ele já é praticamente um DAO pra você, de forma que criar uma camada só pra ficar chamando métodos da JPA pode se tornar totalmente desnecessário.
Todavia, você deve avaliar, pois não é incomum as vezes precisarmos chamar nativeQuerys ou mesmo procedures, mesmo de objetos da JPA. Ainda assim você pode usar JDBC. Enfim, no final das contas essa resposta de “use X ou Y” ou até “X é a melhor abrodagem” sempre vai depender do seu cenário e da solução proposta.
Já que na sua fase de aprendizado isso ainda é uma dúvida muito grande, continue usando o que está servindo bem pra você, que no caso é o Repository.
Meus 2 centavos.
Abs []