The basic difference between them is:
When using the orphanRemoval=true option Doctrine makes the assumption
that the entities are privately owned and will NOT be reused by other
entities. If you neglect this assumption your entities will get
deleted by Doctrine even if you assigned the orphaned entity to
another one.
Say your User
has one-to-many relation to Comment
. If you are using cascade="remove"
, you can remove the reference for Comment
from one User
, and then attach that Comment
to another User
. When you persist them, they will be correctly saved. But if you are using orphanRemoval=true
, even if you will remove given Comment
from one User
, and then attach to another User
, this comment will be deleted during persist, because the reference has been deleted.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…