Всегда обратное отображение для двунаправленных отношений?

Я проверил Hibernate 'Inverse' в файле сопоставления и http://www.nhforge.org/doc/nh/en/#collections-bidirectional и http://blog.xebia.com/2009/03/16/jpa-implementation-patterns-bidirectional-assocations/

Должен ли я всегда использовать inverse=true для двунаправленных сопоставлений на стороне набора (родителя)?

Какие есть альтернативы? Можно ли также определить обе стороны не нулевыми и не обновляемыми?


person Koray Güclü    schedule 06.03.2012    source источник


Ответы (1)


если у вас есть двунаправленное сопоставление, тогда вредно не инвертировать одну сторону, потому что, если у вас есть Cascade.All, обе стороны будут пытаться поддерживать ассоциацию, что означает дублирование записей в таблицах ссылок или избыточные обновления.

Обе стороны, поскольку они не обновляются, полезны для ассоциаций только для чтения.

person Firo    schedule 07.03.2012
comment
docs.oracle.com/javaee/5/api/javax/ persistence/OneToMany.html указывает для MappedBy, что Поле, которому принадлежит связь. Обязательный если связь не является однонаправленной. . Это означает, что для двунаправленных отношений всегда требуется инверсия, и каскад должен быть с двух сторон, верно? - person Koray Güclü; 07.03.2012
comment
В двунаправленных отношениях одна из сторон (и только одна) должна быть владельцем: владелец отвечает за обновление столбцов ассоциации. Ссылка: docs.jboss.org/hibernate/annotations/3.5/reference /ru/ - person Koray Güclü; 07.03.2012
comment
справа ассоциация представляет собой столбец (или таблицу во многих) в базе данных. - person Firo; 08.03.2012
comment
Это может предоставить дополнительную информацию другим людям: docs.jboss.org/hibernate/orm/3.3/reference/en/html/ и docs.jboss.org/hibernate/orm/3.3/reference/en/html/ - person Koray Güclü; 08.03.2012
comment
sleberknight.com/blog/sleberkn/entry/20070329 также хорошо об этом тема - person Koray Güclü; 08.03.2012
comment
Инверсия одной стороны ассоциации указывает Hibernate считать ее зеркалом другой стороны. Это все, что необходимо Hibernate для решения любых проблем, возникающих при преобразовании модели направленной навигации в схему базы данных SQL. Правила просты: всем двунаправленным ассоциациям нужна одна сторона как обратная. В ассоциации «один ко многим» это должна быть «многие стороны», а в ассоциации «многие ко многим» вы можете выбрать любую сторону. Источник: документы. jboss.org/hibernate/orm/4.1/manual/en-US/html/ - person Koray Güclü; 11.09.2012