Example: Spring Mvc With Hibernate

@Controller @RequestMapping("/users") public class UserController {

<!-- Hibernate Core --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.6.15.Final</version> </dependency>

@Autowired private SessionFactory sessionFactory;

// Getters and Setters public Long getId() { return id; } public void setId(Long id) { this.id = id; } spring mvc with hibernate example

@Autowired private UserDAO userDAO;

@Override public User getUserById(Long id) { Session session = sessionFactory.getCurrentSession(); return session.get(User.class, id); }

@Override protected Class<?>[] getRootConfigClasses() { return new Class[]{RootConfig.class}; } !-- Hibernate Core --&gt

public interface UserService { void saveUser(User user); User getUserById(Long id); List<User> getAllUsers(); void updateUser(User user); void deleteUser(Long id); } package com.example.service; import com.example.dao.UserDAO; import com.example.model.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List;

<!-- Servlet API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> 1. Hibernate Configuration (HibernateConfig.java) package com.example.config; import java.util.Properties; import javax.sql.DataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.hibernate5.HibernateTransactionManager; import org.springframework.orm.hibernate5.LocalSessionFactoryBean; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement;

public interface UserDAO { void saveUser(User user); User getUserById(Long id); List<User> getAllUsers(); void updateUser(User user); void deleteUser(Long id); } package com.example.dao; import com.example.model.User; 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 org.springframework.transaction.annotation.Transactional; import java.util.List; @Autowired private SessionFactory sessionFactory

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

@Configuration @EnableTransactionManagement public class HibernateConfig {

@Override public void saveUser(User user) { Session session = sessionFactory.getCurrentSession(); session.saveOrUpdate(user); }