Vishal,
You are binding the Data instance to the RMI Registry and serve the client requests using only one instance of the Data class per table.
Connection factory and connection object design is valid if you want to do the things below:
1) Don't want to create a client id at the client since it is the job of server to keep track of clients.
2) You have a code in the client to lookup and connect to the server when the server is shutdown and restarted without restarting the client. Now your design creating client id at the client may fail.
3) Every time when a new method is added to the Data class, the programmer has to remember to add the client id in the parameter of the method.
4) If you want to restrict access to some of the clients in the future using RMISecurityManager. In your design, you have to put the access control
code in the Data class which is not the right place to manage security.
I may have missed out somethings but I feel by using ConnectionFactory, Connection and LockManager, you are distributing the different functionalities to various classes. It sounds more object oriented to me.