Как красиво обновить объект JPA в Spring Data?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как красиво обновить объект JPA в Spring Data?

Сообщение Anonymous »

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

Код: Выделить всё

package stackoverflowTest.dao;

import javax.persistence.*;

@Entity
@Table(name = "customers")
public class Customer {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;

@Column(name = "name")
private String name;

public Customer(String name) {
this.name = name;
}

public Customer() {
}

public long getId() {
return id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
У нас также есть DTO, который получен в сервисном уровне, а затем передается на сторону контроллера/клиента.
package stackoverflowTest.dto;

public class CustomerDto {

private long id;
private String name;

public CustomerDto(long id, String name) {
this.id = id;
this.name = name;
}

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
< /code>
Итак, теперь предположим, что клиент хочет изменить свое имя в Webui - тогда будет какое -то действие контроллера, где будет обновленный DTO со старым идентификатором и новым названием. and creating a new Cusomter with a new auto-generated id)
However as this is not feasible (especially considering such an entity could have hundreds of relations potentially) - so there come 2 straight forward solutions to my mind:
  • make a setter for the id in the Customer class - and thus allow setting of the id and then save the Customer object via the corresponding repository.
or
  • add the id field to the constructor and whenever you want to update a customer you always create a new object with the old id, but the new values ​​for the other fields (in this case only the name)
So my question is whether Есть общее правило, как это сделать?>

Подробнее здесь: https://stackoverflow.com/questions/397 ... pring-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»