In thinking out my design I've come to the conclusion that it makes sense to omit the implementation of lock() & unlock() from the Data class. My thought here is that a version of the app that is running locally can simply use an instance of the Data class directly. There is no need to lock records. Given this, lock, unlock and criteriaFind would be implemented in my server-side, RMI based FBNDataServer class. Using this approach only requires an implementation for criteriaFind(..) within Data.
Adding 1 method and an 'implements FBNDataInterface' statement to the Data class sounds like a clean solution to the issue at hand.
Bring on the comments