My question concerns concurrency and the two methods, findByCriteria() and readRecord(). There is a time lag between "finding" a list of records that meet a set of criteria and "reading" those same records from the database. My implementation of the Data class doesn't use locking/unlocking with the findByCriteria() method, nor does it use locking/unlocking with the readRecord() method. First, findByCriteria() returns a list of records that meet the search criteria, and then, I must use the readRecord() method to read that list of records into my JTable. This is not an atomic operation. Other clients can access the "found" records in the list before I read them from the database file, and these clients can modify/delete records on my list of "found" records.
There are so many threads regarding this issue already in this forum that you certainly can find several of them using the search function. This one is just a few weeks old (take a look at my last post in that thread).