SAP HANA Cloud Platform で Java で簡単なプロジェクト管理アプリケーションを作成したいと考えています。ユーザーは、プロジェクトに人を追加し、プロジェクトで働く人の労働時間を定義できます。
小さなアプリケーション ロジックの作成に成功しました。ただし、永続データ オブジェクトをどのように定義すればよいかは明確ではありません。そして、正しい方法でデータを保存して読み取る方法。
データを追加するために、クラス "Project" と "Person" を作成しました (以下を参照)。
それらの間に関係を作成し、プロジェクトに費やされた作業時間を保存するにはどうすればよいですか?
ERM では、私は解決策を知っています。Person と Project の間の 1:n 関係と、それらの間の "projectID"、"personID"、および "workingHours" を持つ追加のテーブルです。
これまでのところ、アプリは関数「addNewPerson」を使用してデータを書き込みます。
addNewPerson : function( sFirstName, sLastName, oTable ) {
var _this = this;
_this.odataServiceUrl = personsListOdataServiceUrl;
jQuery.ajax({
url : _this.odataServiceUrl + "/Person?$format=json",
type : 'POST',
contentType : 'application/json',
data : JSON.stringify({
firstName : sFirstName,
lastName : sLastName
}),
success : function(data) {
_this.getView().getModel().refresh();
oTable.unbindRows().bindRows("/Person");
},
error : function(jqXHR, textStatus, errorThrown) {
sap.ui.commons.MessageBox.alert("Failed to add person: " + textStatus+ "\n" + errorThrown);
}
}); },
データを読み取るには、行をオブジェクトにバインドするだけです。
では、データ オブジェクトを正しい方法で作成するにはどうすればよいでしょうか。また、データをオブジェクトに読み書きするにはどうすればよいですか?
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;
}
}
Project.java:
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;
}
}