Beruflich Dokumente
Kultur Dokumente
0
CRUD Example
Posted by Dinesh Rajput
Related Tutorials
1.
2.
3.
4.
Spring
Spring
Spring
Spring
Tutorial
MVC Web Tutorial
Boot Tutorial
Security Tutorial
Step
2: Create
a database.properties for
database
configuration information in the resources folder under src folder
in
the
created
project.
database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/DAVDB
database.user=root
database.password=root
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=truehibernate.hbm2ddl.auto=update
Step
3: Create
a
Dynamic
Web
Project
with
a
name Spring3HibernateApp and
create
packages com.dineshonjava.controller, com.dineshonjava.be
an, com.dineshonjava.dao, com.dineshonjava.service,
com.dineshonjava.model under the src folder in the created
project.
Step
3.0
and
Hibernate
3.0 related
libraries
and
folder WebRoot/WEB-INF/lib.
other
libraries
into
the
Step 5: Create
a
Java
class EmployeeController, EmployeeBean,
Employee,
EmployeeDao,
EmployeeDaoImpl,
EmployeeService,
EmployeeServiceImpl under
the
respective
packages..
Step 6: Create Spring configuration files web.xml and sdnextservlet.xml under the WebRoot/WEB-INF/ and WebRoot/WEBINF/config folders.
Step 7: Create a sub-folder with a name views under
the WebRoot/WEB-INF folder.
Create
a
view
file addEmployee.jsp, employeesList.jsp and index.jsp under
this
sub-folder.
Step 8: The final step is to create the content of all the source and
configuration files name sdnext-servlet.xml under the subfolder /WebRoot/WEB-INF/config and export the application as
explained below.
APPLICATION ARCHITECTURE
EmployeeBean.java
packagecom.dineshonjava.bean;/***@authorDineshRajput**/
publicclassEmployeeBean{privateIntegerid;privateStringname;
privateIntegerage;privateLongsalary;privateStringaddress;
publicLonggetSalary(){returnsalary;}publicvoidsetSalary(Long
salary){this.salary=salary;}publicIntegergetId(){return
id;}publicvoidsetId(Integerid){this.id=id;}publicString
getName(){returnname;}publicvoidsetName(Stringname)
{this.name=name;}publicIntegergetAge(){returnage;}
publicvoidsetAge(Integerage){this.age=age;}publicString
getAddress(){returnaddress;}publicvoidsetAddress(String
address){this.address=address;}}
Employee.java
packagecom.dineshonjava.model;importjava.io.Serializable;import
javax.persistence.Column;importjavax.persistence.Entity;import
javax.persistence.GeneratedValue;import
javax.persistence.GenerationType;importjavax.persistence.Id;import
javax.persistence.Table;/***@authorDineshRajput**/@Entity
@Table(name="Employee")publicclassEmployeeimplements
Serializable{privatestaticfinallongserialVersionUID=
723583058586873479L;@Id
@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="empid")
privateIntegerempId;@Column(name="empname")privateString
empName;@Column(name="empaddress")privateStringempAddress;
@Column(name="salary")privateLongsalary;@Column(name="empAge")
privateIntegerempAge;publicIntegergetEmpId(){returnempId;}
publicvoidsetEmpId(IntegerempId){this.empId=empId;}public
StringgetEmpName(){returnempName;}publicvoid
setEmpName(StringempName){this.empName=empName;}publicString
getEmpAddress(){returnempAddress;}publicvoid
setEmpAddress(StringempAddress){this.empAddress=empAddress;}
publicLonggetSalary(){returnsalary;}publicvoid
setSalary(Longsalary){this.salary=salary;}publicInteger
getEmpAge(){returnempAge;}publicvoidsetEmpAge(IntegerempAge)
{this.empAge=empAge;}}
EmployeeDao.java
packagecom.dineshonjava.dao;importjava.util.List;import
com.dineshonjava.model.Employee;/***@authorDineshRajput**/
publicinterfaceEmployeeDao{publicvoidaddEmployee(Employee
employee);publicList<Employee>listEmployeess();publicEmployee
getEmployee(intempid);publicvoiddeleteEmployee(Employeeemployee);
}
EmployeeDaoImpl.java
packagecom.dineshonjava.dao;importjava.util.List;import
org.hibernate.SessionFactory;import
org.springframework.beans.factory.annotation.Autowired;import
org.springframework.stereotype.Repository;import
com.dineshonjava.model.Employee;/***@authorDineshRajput**/
@Repository("employeeDao")publicclassEmployeeDaoImplimplements
EmployeeDao{@AutowiredprivateSessionFactorysessionFactory;
publicvoidaddEmployee(Employeeemployee)
{sessionFactory.getCurrentSession().saveOrUpdate(employee);}
@SuppressWarnings("unchecked")publicList<Employee>listEmployeess(){
return(List<Employee>)
sessionFactory.getCurrentSession().createCriteria(Employee.class).list();
}publicEmployeegetEmployee(intempid){return(Employee)
sessionFactory.getCurrentSession().get(Employee.class,empid);}
publicvoiddeleteEmployee(Employeeemployee)
{sessionFactory.getCurrentSession().createQuery("DELETEFROMEmployee
WHEREempid="+employee.getEmpId()).executeUpdate();}}
EmployeeService.java
packagecom.dineshonjava.service;importjava.util.List;import
com.dineshonjava.model.Employee;/***@authorDineshRajput**/
publicinterfaceEmployeeService{publicvoidaddEmployee(Employee
employee);publicList<Employee>listEmployeess();publicEmployee
getEmployee(intempid);publicvoiddeleteEmployee(Employeeemployee);
}
EmployeeServiceImpl.java
packagecom.dineshonjava.service;importjava.util.List;import
org.springframework.beans.factory.annotation.Autowired;import
org.springframework.stereotype.Service;import
org.springframework.transaction.annotation.Propagation;import
org.springframework.transaction.annotation.Transactional;import
com.dineshonjava.dao.EmployeeDao;importcom.dineshonjava.model.Employee;
/***@authorDineshRajput**/@Service("employeeService")
@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)
publicclassEmployeeServiceImplimplementsEmployeeService
{@AutowiredprivateEmployeeDaoemployeeDao;
@Transactional(propagation=Propagation.REQUIRED,readOnly=false)
publicvoidaddEmployee(Employeeemployee)
{employeeDao.addEmployee(employee);}publicList<Employee>
listEmployeess(){returnemployeeDao.listEmployeess();}public
EmployeegetEmployee(intempid){return
employeeDao.getEmployee(empid);}publicvoiddeleteEmployee(Employee
employee){employeeDao.deleteEmployee(employee);}}
EmployeeController.java
packagecom.dineshonjava.controller;importjava.util.ArrayList;import
java.util.HashMap;importjava.util.List;importjava.util.Map;import
org.springframework.beans.factory.annotation.Autowired;import
org.springframework.stereotype.Controller;import
org.springframework.validation.BindingResult;import
org.springframework.web.bind.annotation.ModelAttribute;import
org.springframework.web.bind.annotation.RequestMapping;import
org.springframework.web.bind.annotation.RequestMethod;import
org.springframework.web.servlet.ModelAndView;import
com.dineshonjava.bean.EmployeeBean;import
com.dineshonjava.model.Employee;import
com.dineshonjava.service.EmployeeService;/***@authorDineshRajput
**/@ControllerpublicclassEmployeeController{@Autowired
privateEmployeeServiceemployeeService;@RequestMapping(value=
"/save",method=RequestMethod.POST)publicModelAndView
saveEmployee(@ModelAttribute("command")EmployeeBeanemployeeBean,
BindingResultresult){Employeeemployee=prepareModel(employeeBean);
employeeService.addEmployee(employee);returnnew
ModelAndView("redirect:/add.html");}
@RequestMapping(value="/employees",method=RequestMethod.GET)public
ModelAndViewlistEmployees(){Map<StringObject>model=new
HashMap<StringObject>();model.put("employees",
prepareListofBean(employeeService.listEmployeess()));returnnew
ModelAndView("employeesList",model);}@RequestMapping(value=
"/add",method=RequestMethod.GET)publicModelAndView
addEmployee(@ModelAttribute("command")EmployeeBeanemployeeBean,
BindingResultresult){Map<String,Object>model=newHashMap<String,
Object>();model.put("employees",
prepareListofBean(employeeService.listEmployeess()));returnnew
ModelAndView("addEmployee",model);}@RequestMapping(value=
"/index",method=RequestMethod.GET)publicModelAndViewwelcome()
{returnnewModelAndView("index");}@RequestMapping(value=
"/delete",method=RequestMethod.GET)publicModelAndView
editEmployee(@ModelAttribute("command")EmployeeBeanemployeeBean,
BindingResultresult)
{employeeService.deleteEmployee(prepareModel(employeeBean));
Map<String,Object>model=newHashMap<String,Object>();
model.put("employee",null);model.put("employees",
prepareListofBean(employeeService.listEmployeess()));returnnew
ModelAndView("addEmployee",model);}@RequestMapping(value="/edit",
method=RequestMethod.GET)publicModelAndView
deleteEmployee(@ModelAttribute("command")EmployeeBeanemployeeBean,
BindingResultresult){Map<String,Object>model=newHashMap<String,
Object>();model.put("employee",
prepareEmployeeBean(employeeService.getEmployee(employeeBean.getId())));
model.put("employees",
prepareListofBean(employeeService.listEmployeess()));returnnew
ModelAndView("addEmployee",model);}privateEmployee
prepareModel(EmployeeBeanemployeeBean){Employeeemployee=new
Employee();employee.setEmpAddress(employeeBean.getAddress());
employee.setEmpAge(employeeBean.getAge());
employee.setEmpName(employeeBean.getName());
employee.setSalary(employeeBean.getSalary());
employee.setEmpId(employeeBean.getId());employeeBean.setId(null);
returnemployee;}privateList<EmployeeBean>
prepareListofBean(List<Employee>employees){List<employeebean>beans=
null;if(employees!=null&&!employees.isEmpty()){beans=new
ArrayList<EmployeeBean>();EmployeeBeanbean=null;for(Employee
employee:employees){bean=newEmployeeBean();
bean.setName(employee.getEmpName());bean.setId(employee.getEmpId());
bean.setAddress(employee.getEmpAddress());
bean.setSalary(employee.getSalary());
bean.setAge(employee.getEmpAge());beans.add(bean);}}return
beans;}privateEmployeeBeanprepareEmployeeBean(Employeeemployee){
EmployeeBeanbean=newEmployeeBean();
bean.setAddress(employee.getEmpAddress());
bean.setAge(employee.getEmpAge());bean.setName(employee.getEmpName());
bean.setSalary(employee.getSalary());bean.setId(employee.getEmpId());
returnbean;}}
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/springtx3.0.xsd">
<context:propertyplaceholder
location="classpath:resources/database.properties"></context:property
placeholder><context:componentscanbasepackage="com.dineshonjava">
</context:componentscan><tx:annotationdriventransaction
manager="hibernateTransactionManager"></tx:annotationdriven><bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="jspViewResolver"><propertyname="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<propertyname="prefix"value="/WEBINF/views/"></property><property
name="suffix"value=".jsp"></property></bean><bean
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
id="dataSource"><propertyname="driverClassName"value="$
{database.driver}"></property><propertyname="url"value="$
{database.url}"></property><propertyname="username"value="$
{database.user}"></property><propertyname="password"value="$
{database.password}"></property></bean><bean
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFac
toryBean"id="sessionFactory"><propertyname="dataSource"
ref="dataSource"></property><propertyname="annotatedClasses"><list>
<value>com.dineshonjava.model.Employee</value></list></property>
<propertyname="hibernateProperties"><props><prop
key="hibernate.dialect">${hibernate.dialect}</prop><prop
key="hibernate.show_sql">${hibernate.show_sql}</prop><prop
key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props></property></bean><bean
class="org.springframework.orm.hibernate3.HibernateTransactionManager"
id="hibernateTransactionManager"><propertyname="sessionFactory"
ref="sessionFactory"></property></bean></beans>
addEmployee.jsp
<%@pagelanguage="java"contentType="text/html;charset=ISO88591"
pageEncoding="ISO88591"%><%@taglib
uri="http://www.springframework.org/tags/form"prefix="form"%><%@taglib
uri="http://java.sun.com/jsp/jstl/core"prefix="c"%><!DOCTYPEhtml
PUBLIC"//W3C//DTDHTML4.01Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp
equiv="ContentType"content="text/html;charset=ISO88591">
<title>SpringMVCFormHandling</title></head><body><h2>Add
EmployeeData</h2><form:formmethod="POST"action="/sdnext/save.html">
<table><tr><td><form:labelpath="id">Employee
ID:</form:label></td><td><form:inputpath="id"value="$
{employee.id}"readonly="true"/></td></tr><tr>
<td><form:labelpath="name">EmployeeName:</form:label></td>
<td><form:inputpath="name"value="${employee.name}"/></td></tr>
<tr><td><form:labelpath="age">Employee
Age:</form:label></td><td><form:inputpath="age"value="$
{employee.age}"/></td></tr><tr>
<td><form:labelpath="salary">EmployeeSalary:</form:label></td>
<td><form:inputpath="salary"value="${employee.salary}"/></td>
</tr><tr><td><form:label
path="address">EmployeeAddress:</form:label></td>
<td><form:inputpath="address"value="${employee.address}"/></td>
</tr><tr><tdcolspan="2"><inputtype="submit"
value="Submit"/></td></tr></table></form:form>
<c:iftest="${!emptyemployees}"><h2>ListEmployees</h2><table
align="left"border="1"><tr><th>EmployeeID</th><th>Employee
Name</th><th>EmployeeAge</th><th>EmployeeSalary</th>
<th>EmployeeAddress</th><th>ActionsonRow</th></tr>
<c:forEachitems="${employees}"var="employee"><tr><td><c:out
value="${employee.id}"/></td><td><c:outvalue="$
{employee.name}"/></td><td><c:outvalue="${employee.age}"/></td>
<td><c:outvalue="${employee.salary}"/></td><td><c:outvalue="$
{employee.address}"/></td><tdalign="center"><ahref="edit.html?id=$
{employee.id}">Edit</a>|<ahref="delete.html?id=$
{employee.id}">Delete</a></td></tr></c:forEach></table></c:if>
</body></html>
employeesList.jsp
<%@ page language="java" contentType="text/html; charset=ISO88591"
pageEncoding="ISO88591"%>
<%@
taglib
uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html
PUBLIC
"//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>All
Employees</title> </head> <body> <h1>List Employees</h1> <h3><a
href="add.html">Add More Employee</a></h3> <c:if test="${!empty
employees}"> <table align="left" border="1"> <tr> <th>Employee
ID</th> <th>Employee Name</th> <th>Employee Age</th>
<th>Employee Salary</th> <th>Employee Address</th> </tr>
<c:forEachitems="${employees}"var="employee"> <tr> <td><c:out
value="${employee.id}"/></td>
<td><c:out value="$
{employee.name}"/></td> <td><c:out value="${employee.age}"/></td>
<td><c:out value="${employee.salary}"/></td> <td><c:out value="$
{employee.address}"/></td> </tr> </c:forEach> </table> </c:if>
</body></html>
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO88591"
pageEncoding="ISO88591"%><!DOCTYPEhtmlPUBLIC"//W3C//DTDHTML4.01
Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head>
<meta httpequiv="ContentType" content="text/html; charset=ISO88591">
<title>Spring3MVCwithHibernate3CRUDExampleusingAnnotations</title>
</head> <body> <h2>Spring3MVCwithHibernate3CRUDExampleusing
Annotations</h2> <h2>1. <a href="employees.html">List of
Employees</a></h2> <h2>2. <a href="add.html">Add Employee</a></h2>
</body></html>
Once you are done with creating source and configuration files,
export your application. Right click on your application and
useExport->
WAR File
option
and
save
your Spring3HibernateApp.war file in Tomcat's webapps folder.
Now start your Tomcat server and make sure you are able to
access other web pages from webapps folder using a standard
Now click on the Submit button data are saved to the employee
table on the database. And we get the following