Добрый день, я бэкэнд-разработчик и в настоящее время изучаю Angular для фронтэнда. В моей работе нам приходится работать с огромным количеством данных. К сожалению, в JPA использование Oracle PL / SQL затруднительно (процедуры, функции). По этой причине я не должен использовать JPA для работы с огромным количеством данных в базе данных. Вместо JPA я использую чистый JDB C (используя Connection, PrepareStatement и ResultSet для вызова Oracle процедур). Однако у меня возникают трудности с операциями «Обновление, удаление» на Angular, когда я использую Rest API с чистыми JDB C и Angular.
Там есть некоторый код рабочих операций (Create, Read) :
@PostMapping("/employees") // create operation
@ResponseBody
public String insertEmployee(@RequestBody Employee employee) {
JsonObject json = new JsonObject();
Connection conn = null;
CallableStatement cs = null;
try {
String firstName = employee.getFirstName();
String lastName = employee.getLastName();
String emailId = employee.getEmailId();
conn = hds.getConnection();
cs = conn.prepareCall("{CALL NERS.EMPLOYEE_INSERT_P(?, ?, ?)}"); // calling procedure from Oracle
cs.setString(1, firstName);
cs.setString(2, lastName);
cs.setString(3, emailId);
cs.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DataBase.close(cs);
DataBase.close(conn);
}
return json.toString();
}
@GetMapping("/employees") // read operation
public ArrayList<Employee> getEmployee(Model model) {
ArrayList<Employee> employees = new ArrayList<>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = hds.getConnection();
ps = conn.prepareStatement("SELECT * FROM NERS.EMPLOYEE"); // selecting data from Oracle
ps.execute();
rs = ps.getResultSet();
while (rs.next()) {
Employee e = new Employee();
e.setEmployeeId(rs.getInt("employee_id"));
e.setFirstName(rs.getString("first_name"));
e.setLastName(rs.getString("last_name"));
e.setEmailId(rs.getString("email_id"));
employees.add(e);
}
model.addAttribute("employees", employees);
} catch (Exception e) {
e.printStackTrace();
} finally {
DataBase.close(rs);
DataBase.close(ps);
DataBase.close(conn);
}
return employees;
}
Но у меня проблемы с операциями «Обновить, Удалить», когда я использую Angular для внешнего интерфейса, прежде чем он работал с чистым HTML (каркас Thymeleaf)
@PutMapping("/employees/{employeeId}") // update operation
@ResponseBody
public String updateEmployee(@RequestBody Employee employee) {
JsonObject json = new JsonObject();
Connection conn = null;
CallableStatement cs = null;
try {
int employeeId = employee.getEmployeeId();
String firstName = employee.getFirstName();
String lastName = employee.getLastName();
String emailId = employee.getEmailId();
conn = hds.getConnection();
cs = conn.prepareCall("{CALL NERS.EMPLOYEE_UPDATE_P(?, ?, ?, ?)}"); // calling update procedure
cs.setInt(1, employeeId);
cs.setString(2, firstName);
cs.setString(3, lastName);
cs.setString(4, emailId);
cs.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DataBase.close(cs);
DataBase.close(conn);
}
return json.toString();
}
@Deletemapping("/employees/{employeeId}") // delete operation
public String deleteEmployee(@PathVariable int employeeId) {
ArrayList<Employee> employees = new ArrayList<>();
JsonObject json = new JsonObject();
Connection conn = null;
CallableStatement cs = null;
try {
conn = hds.getConnection();
cs = conn.prepareCall("{CALL NERS.EMPLOYEE_DELETE_P(?)}"); // calling delete procedure
cs.setInt(1, employeeId);
cs.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DataBase.close(cs);
DataBase.close(conn);
}
return "employees";
}
В Angular front-end нет ошибок, я проверял их с помощью JPA. Только на заднем плане у меня проблемы. Пожалуйста, можете ли вы посоветовать несколько ссылок на учебники или ваши советы? Я буду счастлив с этим. Я ищу эту проблему в течение 2 недель. Спасибо за продвижение.