У меня уже есть CRUD приложение (без view)
я протестировал каждую операцию все работает в базе изменения отображаются. Тестил с помощью POSTMAN.
хочу понять как бы мне без view протестировать связи?
у меня есть user, у user есть order.
хочу чтобы я мог добавлять и удалять order у user, и если удаляю user, то все его orders тоже бы удалялись из таблицы.
как послать запрос на сервер для добавления юзеру нового ордера? можно без кода только суть или ссылку на статью... но лучше псевдокодом хотябы.
пока что связал сущности:
USER
Кликните здесь для просмотра всего текста
Java |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| package com.kostapo.spring.model;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="firstname",nullable = false)
private String firstname;
@Column(name="lastname",nullable = false)
private String lastname;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Order> orders;
public User() {
}
public User(String firstname, String lastname) {
this.firstname = firstname;
this.lastname = lastname;
orders = new ArrayList<>();
}
public void addOrder(Order order) {
order.setUser(this);
orders.add(order);
}
public void removeOrder(Order order) {
orders.remove(order);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User [id=" + id + ", firstname=" + firstname + ", lastname=" + lastname + "]";
}
} |
|
ORDER
Кликните здесь для просмотра всего текста
Java |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| package com.kostapo.spring.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="product",nullable = false)
private String product;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
public Order() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProduct() {
return product;
}
public void setProduct(String product) {
this.product = product;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "Order [id=" + id + ", product=" + product + ", user=" + user + "]";
}
} |
|
вот контроллер, который пока что работает только с юзером:
Кликните здесь для просмотра всего текста
Java |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| package com.kostapo.spring.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.kostapo.spring.model.User;
import com.kostapo.spring.service.UserService;
@CrossOrigin(origins = "*")
@RestController
public class UserController {
@Autowired
private UserService userService;
/*---Add new user---*/
@PostMapping("/user")
public ResponseEntity<?> save(@RequestBody User user) {
System.out.println("the json value of user is :::::: "+user);
int id = userService.add(user);
return ResponseEntity.ok().body("New User has been saved with ID:" + id);
}
/*---Get user by id---*/
@GetMapping("/user/{id}")
public ResponseEntity<User> get(@PathVariable("id") int id) {
User user = userService.get(id);
return ResponseEntity.ok().body(user);
}
/*---get all users---*/
@GetMapping("/user")
public ResponseEntity<List<User>> list() {
List<User> users = userService.list();
return ResponseEntity.ok().body(users);
}
/*---Update user by id---*/
@PutMapping("/user/{id}")
public ResponseEntity<?> update(@PathVariable("id") int id, @RequestBody User user) {
userService.update(id, user);
return ResponseEntity.ok().body("User has been updated successfully.");
}
/*---Delete user by id---*/
@DeleteMapping("/user/{id}")
public ResponseEntity<?> delete(@PathVariable("id") int id) {
userService.delete(id);
return ResponseEntity.ok().body("User has been deleted successfully.");
}
} |
|
вот DAO слой
Кликните здесь для просмотра всего текста
Java |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| package com.kostapo.spring.dao;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.kostapo.spring.model.User;
@Repository
public class UserDaoImpl implements UserDao{
@Autowired
private SessionFactory sessionFactory;
@Override
public int add(User user) {
sessionFactory.getCurrentSession().save(user);
return user.getId();
}
@Override
public User get(int id) {
return sessionFactory.getCurrentSession().get(User.class, id);
}
@Override
public List<User> list() {
Session session = sessionFactory.getCurrentSession();
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<User> cq = cb.createQuery(User.class);
Root<User> root = cq.from(User.class);
cq.select(root);
Query<User> query = session.createQuery(cq);
return query.getResultList();
}
@Override
public void update(int id, User user) {
Session session = sessionFactory.getCurrentSession();
User tmpuser = session.byId(User.class).load(id);
tmpuser.setFirstname(user.getFirstname());
tmpuser.setLastname(user.getLastname());
session.flush();
}
@Override
public void delete(int id) {
Session session = sessionFactory.getCurrentSession();
User user = session.byId(User.class).load(id);
session.delete(user);
}
} |
|