Java 如何配置&;在SAP HANA云中使用持久数据对象?

Java 如何配置&;在SAP HANA云中使用持久数据对象?,java,persistence,sap,sap-cloud-platform,Java,Persistence,Sap,Sap Cloud Platform,我想在SAP HANA云平台上用Java创建一个简单的项目管理应用程序。用户可以向项目中添加人员,并定义在项目中工作的人员的工作时间 我成功地创建了一个小型应用程序逻辑。但是,我不清楚应该如何定义持久数据对象。以及如何以正确的方式存储和读取数据 我创建了类“Project”和“Person”来添加数据(见下文) 我如何在他们之间建立关系并存储一个人在项目上花费的工作时间 在ERM中,我知道解决方案:Person和Project之间的1:n关系,以及它们之间的一个额外表格,其中包含“project

我想在SAP HANA云平台上用Java创建一个简单的项目管理应用程序。用户可以向项目中添加人员,并定义在项目中工作的人员的工作时间

我成功地创建了一个小型应用程序逻辑。但是,我不清楚应该如何定义持久数据对象。以及如何以正确的方式存储和读取数据

我创建了类“Project”和“Person”来添加数据(见下文)

我如何在他们之间建立关系并存储一个人在项目上花费的工作时间

在ERM中,我知道解决方案:Person和Project之间的1:n关系,以及它们之间的一个额外表格,其中包含“projectID”、“personID”和“workingHours”

到目前为止,应用程序使用函数“addNewPerson”写入数据:

要读取数据,我只需将行绑定到对象

那么,如何以正确的方式创建数据对象呢?我如何读取和写入对象的数据

Person.java:

package com.sap.netweaver.cloud.sample;
import javax.persistence.*;
@Entity
@Table(name = "T_PERSON")
@NamedQuery(name = "AllPersons", query = "select p from Person p")

public class Person {
    @Id
    @GeneratedValue
    private long id;
    @Basic
    private String firstName;
    @Basic
    private String lastName;

    public long getId() {
        return id;
    }

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

    public void setFirstName(String param) {
        this.firstName = param;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setLastName(String param) {
        this.lastName = param;
    }

    public String getLastName() {
        return lastName;
    }
}
package com.sap.netweaver.cloud.sample;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@Table(name = "T_PROJECT")
@NamedQuery(name = "AllProjects", query = "select p from Project p")
public class Project {

    @Id
    @GeneratedValue
    private long id;
    @Basic
    private String projectName;
    @Basic
    private String projectDesc;
    public long getId() {
        return id;
    }

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

    public void setProjectName(String param) {
        this.projectName = param;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectDesc(String param) {
        this.projectDesc = param;
    }

    public String getProjectDesc() {
        return projectDesc;
    }
}
Project.java:

package com.sap.netweaver.cloud.sample;
import javax.persistence.*;
@Entity
@Table(name = "T_PERSON")
@NamedQuery(name = "AllPersons", query = "select p from Person p")

public class Person {
    @Id
    @GeneratedValue
    private long id;
    @Basic
    private String firstName;
    @Basic
    private String lastName;

    public long getId() {
        return id;
    }

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

    public void setFirstName(String param) {
        this.firstName = param;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setLastName(String param) {
        this.lastName = param;
    }

    public String getLastName() {
        return lastName;
    }
}
package com.sap.netweaver.cloud.sample;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@Table(name = "T_PROJECT")
@NamedQuery(name = "AllProjects", query = "select p from Project p")
public class Project {

    @Id
    @GeneratedValue
    private long id;
    @Basic
    private String projectName;
    @Basic
    private String projectDesc;
    public long getId() {
        return id;
    }

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

    public void setProjectName(String param) {
        this.projectName = param;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectDesc(String param) {
        this.projectDesc = param;
    }

    public String getProjectDesc() {
        return projectDesc;
    }
}

首先,请回答您关于此人与项目之间关系的问题。由于一个项目可以有多个人,我想,你需要一个

@OneToMany(mappedBy = "projectEntity", cascade = CascadeType.PERSIST)
private List<Persons> persons= new ArrayList<Persons>();
对于测试,我强烈建议执行以下步骤:

  • 从SAP HCP sdk中的JPA示例开始:neo-java-web-sdk-2.36.4\samples\persistence with JPA
  • 理解示例(create、persit、find)后,添加1:N 通过添加具有上述编码的第二个实体来建立关系。 3)
  • 如果这是可行的,我建议从本地Tomcat或JavaEE服务器中设置的默认内存数据库转到真正的本地数据库。阿帕奇·德比在那里很适合我。您可以在各种youtube视频中找到derby的安装说明
    您可能想查看Timo Lakner在他的博客文章,他使用了类似的技术(JCo),但也许您可以重用他提供的UI中的一些模式。最好的,鲁伊