I have a project using Spring Data for Neo4j (also known as "SDN"). You can see it at
https://github.com/mtsinc1/Dibs.
At the moment, the Neo4j interface isn't very portable, I fear, and one thing that I'm used to having when using Spring is transparent transaction support. Which, for some reason I (and others) have a lot of trouble getting to work properly in SDN at the moment, which is why the code is infested with manual transaction management.
Spring has several advantages. It provides a general Inversion of Control architecture to programs - not just database stuff, but all sorts of things. I use it to swap in and out dummy emailer modules for
testing, as an example.
In the database realm, it provides good ORM support, does the grunt work that goes around database functions, such as getting and releasing connections and genericized error handling and - except as noted above - it's pretty good about transaction handling as well.
Although Spring does try to abstract things, the Neo4j approach is pretty different from traditional SQL databases, since it's predicated more on the relationships than the data. MongoDB is probably easier to swap back and forth with SQL-oriented stuff.