Professional Documents
Culture Documents
Day07-Slide - 01-Spring-Mvc-Crud-Project-Overview-2022 - TranLQ
Day07-Slide - 01-Spring-Mvc-Crud-Project-Overview-2022 - TranLQ
Spring MVC
and
Hibernate
Customer Relationship Management - CRM
▪ Customer Relationship Management - CRM
Customer Relationship Management - CRM
• List Customers
• Update a Customer
• Delete a Customer
Setup DatabaseTable
▪ Setup DatabaseTable
Two Database Scripts
1. Folder: sql-scripts
1. create-user.sql
2. customer-tracker.sql
About: 01-create-user.sql
password: springstudent
About: 02-customer-tracker.sql
<bean id="sessionFactory"
class=“org.springframework.orm.hibernate5.LocalSessionFactoryBean"
>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
Step 3: Setup Hibernate transaction manager
<bean id="myTransactionManager"
class=“org.springframework.orm.hibernate5.HibernateTransactionManager">
</bean>
www.luv2code.com
Step 4: Enable configuration of transactional
annotations
/customer/list
Customer
Controller
Web
Browser
list-customers.jsp
Sample AppArchitecture
Date
Sample App Features - Refresher
• List Customers
• Update a Customer
• Delete a Customer
Big Picture
Web 4
Browser
JSP Pages
5
Customer Data AccessObject
Customer Customer
Controller DAO
Customer Data AccessObject
Methods
saveCustomer(…)
getCustomer(…)
getCustomers()
updateCustomer(…)
deleteCustomer(…)
Big Picture
Web 4
Browser
JSP Pages
5
List Customers - DevProcess
▪ List Customers - DevProcess
Date
List Customers
1. Create Customer.java
2. Create CustomerDAO.java
1. and CustomerDAOImpl.java
3. Create CustomerController.java
1. Create Customer.java
2. Create CustomerDAO.java
1. and CustomerDAOImpl.java
3. Create CustomerController.java
Hibernate
Step 1: Map class to database table
@Entity
@Table(name="customer")
public class Customer {
...
Java Class Database Table
}
Customer
Step 2: Map fields to database columns
@Entity
@Table(name="customer")
public class Customer {
@Id
@Column(name="id")
private int id; Java Class Database Table
Customer
@Column(name="first_name")
private String firstName;
…
}
Entity Scanning
• Remember our Spring MVC config file?
<bean id="sessionFactory"
class=“org.springframework.orm.hibernate5.LocalSessionFactoryBean"
>
</bean>
Define Data AccessObject
▪ Define Data AccessObject
Date
Big Picture
Web 4
Browser
JSP Pages
5
Customer Data Access Object
Customer Session
…
DAO Factory
Hibernate Session Factory
✤ Our Hibernate Session Factory needs a Data Source
Customer Session
Data Source
DAO Factory
Dependencies
Data Source
Session Factory
<bean id="sessionFactory"
class=“org.springframework.orm.hibernate5.LocalSessionFactoryBean">
...
</bean>
Session
Data Source
Factory
Customer DAO
1. Define DAO interface
Customer Session
Data Source
DAO Factory
Step 1: Define DAO interface
}
Step 2: Define DAO implementation
@Autowired
private SessionFactory sessionFactory;
}
Spring @Transactional
// start a transaction
session.beginTransaction();
// commit transaction
session.getTransaction().commit();
Spring @Transactional Magic
@Transactional
public List<Customer> getCustomers() {
// create a query
Query<Customer> theQuery =
currentSession.createQuery("from Customer", Customer.class);
return customers;
}
Specialized Annotation forDAOs
@Component
@Controller @Repository
Specialized Annotation forDAOs
• thanks to component-scanning
@Autowired
private SessionFactory sessionFactory;
@Transactional
public List<Customer> getCustomers() {
…
}
}
Inject DAO intoController
▪ Inject DAO intoController
Date
List Customers
1. Create Customer.java
2. Create CustomerDAO.java
1. and CustomerDAOImpl.java
3. Create CustomerController.java
Web 4
Browser
JSP Pages
5
Create JSP View Page
▪ Create JSP ViewPage
Date
List Customers
1. Create Customer.java
2. Create CustomerDAO.java
1. and CustomerDAOImpl.java
3. Create CustomerController.java
Web 4
Browser
JSP Pages
5
Apply CSS and make it Pretty
Development Process
<link type="text/css"
rel="stylesheet"
href="${pageContext.request.contextPath}/resources/css/style.css">
</head>
Applies for JavaScript, images, pdfsetc…
Alternate Directory Structure
Alternate Directory Structure
File: spring-mvc-crud-demo-servlet.xml
Date
This is our “welcome page” ???
Welcome File
http://localhost:8080/web-customer-
tracker