@Override public void deleteUser(Long id) { Session session = sessionFactory.getCurrentSession(); User user = session.get(User.class, id); if (user != null) { session.delete(user); } } } UserService Interface package com.example.service; import com.example.model.User; import java.util.List;
public String getName() { return name; } public void setName(String name) { this.name = name; }
@GetMapping("/showForm") public String showFormForAdd(Model model) { model.addAttribute("user", new User()); return "user-form"; }
@Autowired private SessionFactory sessionFactory; spring mvc with hibernate example
Overview This example demonstrates integrating Spring MVC with Hibernate for building a complete web application with database persistence. Spring MVC handles the web layer while Hibernate manages ORM (Object-Relational Mapping) for database operations. Project Structure spring-mvc-hibernate-example/ ├── src/main/java/ │ └── com/example/ │ ├── config/ │ │ ├── WebConfig.java │ │ ├── RootConfig.java │ │ └── HibernateConfig.java │ ├── controller/ │ │ └── UserController.java │ ├── dao/ │ │ ├── UserDAO.java │ │ └── UserDAOImpl.java │ ├── model/ │ │ └── User.java │ └── service/ │ ├── UserService.java │ └── UserServiceImpl.java ├── src/main/webapp/ │ ├── WEB-INF/ │ │ └── views/ │ │ ├── user-list.jsp │ │ ├── user-form.jsp │ │ └── user-detail.jsp │ └── index.jsp └── pom.xml Dependencies (pom.xml) <dependencies> <!-- Spring MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.31</version> </dependency> <!-- Spring ORM --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>5.3.31</version> </dependency>
@Override public User getUserById(Long id) { Session session = sessionFactory.getCurrentSession(); return session.get(User.class, id); }
@Entity @Table(name = "users") public class User { @Override public void deleteUser(Long id) { Session session
<!-- JSTL --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
@Override public void updateUser(User user) { Session session = sessionFactory.getCurrentSession(); session.update(user); }
@GetMapping("/delete") public String deleteUser(@RequestParam("userId") Long id) { userService.deleteUser(id); return "redirect:/users/list"; } User user = session.get(User.class
@PostMapping("/save") public String saveUser(@Valid @ModelAttribute("user") User user, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return "user-form"; } userService.saveUser(user); return "redirect:/users/list"; }
@Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setViewClass(JstlView.class); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); return resolver; } } package com.example.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import;
@Override public User getUserById(Long id) { return userDAO.getUserById(id); }
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Long id;