You are on page 1of 35

Spring MVC and ORM

• use mydb;

• create table user(id int,name varchar(20),email varchar(30));

• select * from user;


Create the Maven Project
• Create a maven project.
• Go to maven-archetype-webapp.
• Add the dependencies in pom.xml
• Spring-webmvc
• Spring orm
• Hibernate core
• Mysql connector java
web.xml DispatcherServlet
Now go to web.xml add DispatcherServlet
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
HibernateTemplate

SessionFactory

dispatcher-servlet.xml

DataSource

ViewResolver
Copy from springorm config.xml and rename into dispatcher-servlet
<tx:driven annotation>
<bean
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
name="dataSource" p:driverClassName="com.mysql.cj.jdbc.Driver"
p:url="jdbc:mysql://localhost/mydb" p:username="root"
p:password="root" />
<bean
class=" org.springframework.orm.hibernate5.LocalSessionFactoryBean"
name="sessionfactory" p:dataSource-ref="dataSource">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.trainings.springorm.product.entity.Product</value>
</list>
</property>
</bean>
<bean class="org.springframework.orm.hibernate5.HibernateTemplate"
name="hibernateTemplate" p:sessionFactory-ref="sessionfactory" />
<bean
class="org.springframework.orm.hibernate5.HibernateTransactionManager"
name="transactionManager" p:sessionFactory-ref="sessionfactory" />
Next do the view Resolver. Go to springMvc project open dispatcher-servlet.xml grab the
viewresolver data and paste in springmvcorm project>>>>

<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
name="viewResolver">
<property name="prefix">
<value>/WEB-INF/jsps/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
Model

DAL Layer

Code
Services Layer

Controller Layer
• Create a java folder using main/java
• Create a class user called user.entity package
• @Entity
• @Table(name="user")
• public class User {
• @Id
• private int id;
• private String name;
• private String email;
• //g & s tostring
Coding Steps
Model

Controller Services DAL

UserController UserService UserDao HibernateTemplate

UserServiceImpl UserDaoImpl
• Create a userDao interface
• Create a userdaoImpl class
• Create a userService interface
• Create a userServiceImpl class
• Create a userController class
In the web.xml remove the header(use tomcat 9 or 8.5)
• <web-app>
• <display-name>Archetype Created Web Application</display-name>

• <servlet>
• <servlet-name>dispatcher</servlet-name>
• <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
• </servlet>

• <servlet-mapping>
• <servlet-name>dispatcher</servlet-name>
• <url-pattern>/</url-pattern>
• </servlet-mapping>
• </web-app>
In the dispatcher-servlet.xml
• <context:component-scan
• Then add the correct entity class name.

• <property name="annotatedClasses">
• <list>
• <value>springmvcandorm.user.entity.User</value>
• </list>
• </property>
public interface UserDao {

int create(User user);


}
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private HibernateTemplate hibernateTemplate;

public HibernateTemplate getHibernateTemplate() {


return hibernateTemplate;
}

public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {


this.hibernateTemplate = hibernateTemplate;
}

@Override
public int create(User user) {
Integer result = (Integer) hibernateTemplate.save(user);
return result;
}
}
public interface UserService {

int save(User user);


}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao dao;

public UserDao getDao() {


return dao;
}

public void setDao(UserDao dao) {


this.dao = dao;
}
@Override
@Transactional
public int save(User user) {
return dao.create(user);

}
}
@Controller
public class UserController {
@Autowired
private UserService service;

@RequestMapping("registrationpage")
public ModelAndView showRegistrationPage() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("UserRej");
return modelAndView;
}
//first use modelandview once it working fine change to modelmap and string
@RequestMapping("registrationpage")
public String showRegistrationPage() {
return "UserRej";
}
@RequestMapping(value = "registerUser", method = RequestMethod.POST)
public String registerUser(@ModelAttribute("user") User user, ModelMap model) {
Integer result = service.save(user);
model.addAttribute("result", "my id data is " + result);
return "UserRej";
}
public UserService getService() {
return service;
}
public void setService(UserService service) {
this.service = service;
}
}
/WEB-INF/jsps folder…open UserRej.jsp
<form action="registerUser" method="post">
id:<input type="text" name="id"><br/>
name:<input type="text" name="name"><br/>
email:<input type="text" name="email"><br/>
<input type="submit" name="register"><br/>
</form>

<br/>${result}
</body>
</html>
Dao interface
• public interface UserDao {

• int create(User user);

• List<User> findUsers();
•}
• @Repository
• public class UserDaoImpl implements UserDao {
• @Autowired
• private HibernateTemplate hibernateTemplate;
• ----
• ----------------------
• @Override
• public List<User> findUsers() {
• return hibernateTemplate.loadAll(User.class);
•}
Service interface
• public interface UserService {

• int save(User user);

• List<User> getUsers();
•}
• @Service
• public class UserServiceImpl implements UserService {
• @Autowired
• private UserDao dao;
• ----
• ------------------
• @Override
• public List<User> getUsers() {
• return dao.findUsers();
•}
In controller class
• @Controller
• public class UserController {
• @Autowired
• private UserService service;
• --------------------
• -----------------------------------
• @RequestMapping("getusers")
• public String getUsers(ModelMap model) {
• List<User> users = service.getUsers();
• model.addAttribute("users", users);
• return "displauUsers";
•}
Go to web.xml(important)
• Go to google and type web app 3.0 dtd. Grab and paste it in web.xml
• Add JSTL » 1.2 maven dependency in pom.xml
• Add Standard » 1.1.2 maven dependency in pom.xml
• Create a new jsp page displayUsers.
• Add jstl tag lib in display users. So go to google and type jstl taglib uri and grab
the data and paste it.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<%@ page isELIgnored="false" %>
Open displayuser.jsp page
• (header add jstl taglib uri)
• <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

</head>
<body>
<table border="1">
<tr><td>id</td><td>name</td><td>email</td></tr>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.email}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
 Sort By Id(ascending way)
@Entity
@Table(name="user")
public class User implements Comparable<User>{ //make clear comparable
@Id
private Integer id; //its integer not int,it should be class
//getter and setter will be autoboxing by int
private String name;
private String email; //getter and setter and tostring
//add the unimplemented method
@Override
public int compareTo(User user) {

return this.id.compareTo(user.id);
}
In userserviceImpl
• @Service
• public class UserServiceImpl implements UserService {
• @Autowired
• private UserDao dao;

//add the small implementation


@Override
public List<User> getUsers() {
List<User> findall = dao.findall(); //>>>>>>
Collections.sort(findall); //>>>>>>>>
return findall;
}
//now see all in ascending value output

You might also like