Give your ObjectFactory class a make_copy function, that takes in an entity and can create a complete separate clone of that given entity, creating new components which are identical to the original entity's components and add these new component to the new entity. You can load this "origional" entity from file once and store it in some map or something with a name as key ( like "Player" ). This entity will now act as a template.
Later when you want to make an instant of that template, you can call factory.CreateObject("Player");, which would look up the map with "Player" and then make a copy of the template entity and return it to you and tada!
EDIT:
To solve your "Passing the component to systems" problem,
Have a base System class which will have a pure virtual AddComponent function which would accept a pointer to component. Make all your Systems derive from this System base class. Then let the ObjectFactory store a list of pointers to these Systems and whenever it creates a new Component, it passes it to the respective system.