Я пришел из python / django, где я привык делать это в представлении, а django заботится обо всей магии db на заднем плане:
def register(request, email, password):
User.objects.create(email=email, password=password)
// Or, could do: user = User(); user.email = email; user.password=password; user.save()
return redirect(...)
В java / spring я пытаюсь выяснить наилучшую практику выполнения вышесказанного. Вот что у меня сейчас:
@PostMapping("/register")
public String registerForm(HttpServletRequest request, HttpServletResponse response, Model model) throws ServletException, IOException {
Session sessionOne = HibernateUtil.getSessionFactory().openSession();
sessionOne.beginTransaction();
//Create new user object
UserEntity user = new UserEntity();
user.saveUser(name, email, password);
sessionOne.save(user);
sessionOne.getTransaction().commit();
HibernateUtil.shutdown();
}
А мой UserEntity
выглядит примерно так:
@Entity
@Table(name = "users")
public class UserEntity {
private String email;
private String password;
public null saveUser(String name, String email, String password) {
this.name = name;
this.email = email;
}
Вышеуказанный правильный способ сделать это? В частности, относительно следующего:
- Нужно ли создавать сеанс через HibernateUtil и выключать его при каждом запросе на просмотр?
- Нужно ли начинать сеанс, сохранять сеанс и затем каждый раз фиксировать транзакцию?
- Куда мне помещать методы сохранения / транзакции, в контроллере представления, или в UserEntity, или где-то еще?
Вышесказанное кажется мне очень запутанным: я думаю, что было бы проще напрямую запрашивать базу данных, а не делать все создание сеанса, сохранение, уничтожение и т. Д. Каждый раз, когда я открываю новое представление. Что было бы лучшим для этого?