My idea would be:
1) to make a select on some sort of timestamp column your event table quite certainly contains - sorting the results.
2) if you get more than 1000 results, find the timestamp of the last entry to keep
3) If you have Hibernate 3, use a bulk delete (see
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#batch-direct), otherwise use directly JDBC to remove all events older than the timestamp found at step 2.
This is certainly a few orders of magnitude more efficient tan what you're doing.
By the way, I would also tend to do the following: wait until the table contains more than say 2000 events, then delete down to 1000 - a matter of taste, not knowing anything else about your application.
Erik