Можно ли остановить соединения в JPA? - PullRequest
1 голос
/ 18 марта 2012

У меня есть соединения, определенные в моем классе сущностей. Когда я делаю запрос, возвращаются и объекты соединения.

Можно ли остановить эти объединения или они будут происходить всегда? В некоторых случаях я хотел бы остановить их возникновение, чтобы я не передавал ненужные связанные объекты в мои объекты переноса. Или это практика раздеваться, что вам нужно только для передачи объекта?

Спасибо

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Лучше было бы создать новый объект переноса и получить его из базы данных. Итак, для примера: если у вас есть класс Person и вам нужно передать некоторые его свойства, подумайте о том, чтобы выполнить следующие действия:

Класс Original Person будет выглядеть примерно так:

Class Person {
    private String firstName;
    private String lastName;
    Private Set<User> users
}

Создайте новый класс, который будет вашим объектом переноса, при условии, что вам нужно только передать некоторые свойства класса персонажа.

Class PersonDTO {
   private String firstName;
   private String lastName;

   public PersonDTO(String firstName, String lastName){
        this.firstName = firstName;
        this.lastName = lastName; 
   }
}

Теперь вы можете написать свой запрос как

Select new PersonDTO(firstName, lastName) from Person p;

Примечание : Соответствующий конструктор в PersonDTO важен.

Надеюсь, это поможет.

1 голос
/ 18 марта 2012

Если вам не нужно извлекать все объединяемые сущности при каждом запросе, вы можете использовать отложенную выборку. Этот параметр выборки можно добавить к аннотациям: @Basic, @OneToMany, @ManyToOne, @OneToOne и @ ManyToMany.

например. @ManyToOne(fetch = FetchType.LAZY)

Устанавливая FetchType.LAZY, вы не извлекаете все эти объединенные поля из БД, пока они не будут явно доступны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...