The big thing is that all those objects being stored into the Session and not being Batched.
There are a few options.
1) In a for loop set the batch size to say 50. When you reach 50 do a session.flush and session.evictAll() to remove objects in the Session. This will help a little bit.
Test out batch sizes to see where you get the best performance.
2) How are those points created, you could do more batch SQL code instead of creating objects and using session.saveOrUpdate()
3) If this is truly a batch update of tons of records, maybe Hibernate isn't the best choice for this. You can always go low level and getConnection() from the session and do it via
JDBC.
Mark