The key difference between Hibernate (and most other ORMs) versus Spring/JDBC is that most ORM's support "lazy loading" which can actually be very problematic in remoting applications. Suppose you are using Hibernate and have a Person class which has a collection of Address objects. If you ask Hibernate for a Person instance, by default it will load only the simple properties of Person and the "addresses" collection will be an empty proxy. When you access "addresses" for the first time, Hibernate will execute some SQL to magically "lazy load" the data into the addresses collection for you. When you pass Person with the lazy addresses up to whichever serializer in use, it will walk the entire object graph and trigger lazy loading of every lazy proxy it can reach. In a complex object model, this can result in literally thousands of SQL queries to fully load the object graph before sending it to the server, to say nothing of the multiple megabytes of data that will be send over the wire.
One of the other posters mentioned using DTO's with Hibernate and this is not a bad recommendation because it helps work around this lazy loading issue. You essentially wrap all of your entities with the DTO's and then return only DTO's to the serializer. Expanding the previous example, suppose Person also has a single Department object tied to it. PersonDto can instead have a "departmentId" property, which when accessed pulls only the "id" property from the underlying Department object. Since Hibernate lazy entity proxies are always populated with their identifier, you can can access this data without having to lazy load the object. Since PersonDto doesn't actually expose a Department object to the serializer, it will not be able to walk it and try to load all of the data.
There is one alternative to using DTO's with Hibernate, which is to do some very fancy things to those Hibernate lazy proxies so they play nicely with the serializer. Take a look at a project called Gilead if you want to learn more.
You also mentioned scalability and of course the answer is "it depends." :) In terms of handling more users, it will be easier to tune the SQL using Spring/JDBC which may increase performance and lessen load on the database, possibly allowing you to support more users. However, in terms of code maintainability and the sheer amount of work you'll need to do, Hibernate may offer a better option since it automates a lot of tedious crud functionality.