Когда использовать, для не использования, OneToOne и ManyToOne

Я только что начал читать JPA, и реализация в в спящем режиме для понимания деталей. но, чтобы продолжить разработку до того времени, может Вы помогать разъяснить основной qn.

  1. Когда использовать OneToOne
    Я могу использовать OneToOne, если менеджер по объекту должен обработать постоянство связанного объекта. точка, я могу всегда жить, не указывая непосредственный, но затем ответственность находится на мне для управления отношениями и удостоверяясь, что отнесенные объекты не находятся в переходном состоянии. Действительно ли это верно?

  2. Когда использовать, или не использовать, ManyToOne
    Скажите, что я определяю класс Сотрудника и должен определить рэл с Работодателем. В этом случае сделайте я должен указать manyToOne как ниже, или что если нет

     @Entity   
        public class Employer {  
        String name;   
        }   
    
        @Entity   
        class Employee {  
            String name;  
            @ManytoOne  //or not??   
            Employer employer;   
            }
    

спасибо

11
задан miku 16 July 2010 в 09:44
поделиться

2 ответа

1: При работе с отношениями сущностей вы всегда должны использовать соответствующие аннотации (OneToOne, OneToMany, ManyToOne или ManyToMany). У вас есть выбор: хотите ли вы убедиться, что сущность, стоящая за отношением, не является временной, или указать свойство cascade в аннотации OneToOne, чтобы JPA позаботилась об этом за вас. Это позволяет вам создать целый граф объектов и сохранить их за один вызов:

@OneToOne(cascade = CascadeType.ALL)
private MyType myType;

2: Да, отношения работодатель-сотрудник звучат как отношения OneToMany, а отношения между сотрудником и работодателем будут ManyToOne. Если вы хотите иметь оба направления, это называется двусторонними отношениями. См. Подробности в соответствующем разделе руководства по Java EE .

Раздел JPA в руководстве по Java EE - хорошая ссылка для начала.

7
ответ дан 3 December 2019 в 10:03
поделиться

Когда использовать OneToOne Я могу использовать OneToOne, если диспетчеру сущностей необходимо обеспечить постоянство связанного объекта. Дело в том, что я всегда могу жить без указания oneToOne, но тогда я должен управлять отношениями и следить за тем, чтобы упомянутые объекты не находились в переходном состоянии. Это правда?

Вам не нужно отмечать связь, если вы не хотите, чтобы диспетчер сущностей обрабатывал операции. Вы можете иметь связанную сущность как временное поле и сохранять связанную сущность вручную. Но в этом случае вы бы не использовали весь список функций, которые предоставляет JPA.

Помечая отношения, EntityManager узнает о структуре базы данных. И это важно, если вы хотите использовать возможности JPA.

Eg: class Car
      {
         @OneToOne
         Warehouse warehouse;
         //other fields
      }

Здесь

  • я могу получить связанный объект Warehouse при извлечении автомобиля

  • Я могу сохранить объект Warehouse, сохраняя автомобиль (с каскадной опцией, как объяснено на плакате ниже)

  • аналогично Update, Delete. ..

Помимо этого, при использовании JPQL

вы можете перейти к хранилищу

, как в

em.createQuery("select c.warehouse from Car c"); 

. Они не будут работать, если вы не отметите взаимосвязь.

3
ответ дан 3 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: