Design problem:
Matching this as a component is easier to handle, the database schema is simplified and handles this class.
When you match it many-to-one, it needs an identifier. When other types also use this UserInfo, they need to save it in the same general table. In any case, you must ensure that the same instance is UserInfonot used by multiple owners. This is not possible with components; you cannot share UserInfo.
Performance issue:
, . , , . UserInfo , , , .
, NH UserInfo . , , UserInfo , . ( join), NH . , .
:
(--) - . , (!) Users , UserInfos.