用列表更新hibernate实体

时间:2016-12-29 19:39:33

标签: java hibernate

我需要在hibernate中更新实体,比如

class EntityA {
private String name

//one-to-many, orhpan removal = true, bidirectioanl
private List<EntityB> listB;
}

我从REST API接收对象,我需要更新listB中的项目和实体A的名称。

列表中的项目可以更新/删除/添加

从hibernate的角度来看,最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

首先,您使用http请求调用的表示资源的格式是什么。

  • JS​​ON
  • XML

如果您的资源格式是json,那么您将把json对象映射到您的java对象并使用JPA进行管理。

示例

假设您的json格式资源包含以下名为user_info.json的用户数据

{ 
  "firstName" : "jack",
  "lastName"  : "Dawson",
  "contacts" : [
                {
                  "cellphone" : "434343",
                  "address" : "agrabad",
                  "city"  : "ctg"
                },
                {
                  "cellphone" : "+88667755",
                  "address" : "chokbazar",
                  "city"  : "dhk"
                 }
               ]
      }

您的用户pojo类是:

public class User {

Private String firstName;
Private String lastName;
private Collection<Contact> contacts;

public String getFirstName() {
    return firstName;
}
public void setFirstName(String firstName) {
    this.firstName = firstName;
}
public String getLastName() {
    return lastName;
}
public void setLastName(String lastName) {
    this.lastName = lastName;
}
public Collection<Contact> getContacts() {
    return contacts;
}
public void setContacts(Collection<Contact> contacts) {
    this.contacts = contacts;
}
} 

有很多json lib,我个人更喜欢Google开发的Gson。 因此,使用Gson可以将json对象映射到java对象。以下关于将json映射到java对象的代码片段:

User user = new Gson().fromJson("user_info_Json_String", User.class)

所以你完成了映射。您只需根据EntityManager操作执行用户对象即可。

注意:用户类状态必须在映射期间匹配json密钥字符串。

如果资源格式是XML,则JAXB是编组和解组的重要功能,例如对象为xml,反之亦然。

更新:要更新联系人到数据库的集合,我们不需要逐个添加元素。 Java Collection有方法调用addAll()。只是使用它。这是一个例子:

Collection<Contacts> jsonUserContacs = user.getContacts();
Collection<Contacts> dbContacts = dbuser.getContacts();
dbContacts.addAll(jsonUserContacs);

多数民众赞成。您无需逐个添加联系人。

希望这种知识转移可以帮助您。谢谢。