Quote:
This involves (I think) writing the object to the archive table and deleting it from the original one.
Yeah, that's about it.
Sometimes ETL tools are better at these types of processes, but it's certainly doable with Hibernate.
Simply load the record/object. Delete the record from the one table, perhaps pass the entity to a constructor that creates a copy, but of the other object table, and then save to the new table. Do it all within the scope of a transaction and you'll get your unit of work/ACID properties that you'll want.
You may need to do an evict or something during the copy stage - not sure. This little tutorial on How Hibernate Works might help answer some questions on what to do when you get into the guts of your app:
http://jpa.ezhibernate.com/Javacode/learn.jsp?tutorial=07howhibernateworks