In reply to shanshan:
The uvm_config_db is much simpler in some regards than OVM’s set/get_config. In the UVM, you are just setting/getting the contents of a variable, and the config_db does not care what type that variable is. So I assume you setting a class handle, then getting the handle. There is only one class object. It’s up to the user to clone the object if needed.
If by root scope you mean the top-level module with an initial block that calls run_test() and another initial block that calls uvm_config_db#(classA)::set(), the UVM guarantees a “delta” cycle before any of the uvm_component phases being executing. So the set() will always come before the get().