Рубрики
Без рубрики

Пример интеграции JSF 2.0 + Spring + Hibernate

– Пример интеграции JSF 2.0 + Spring + Hibernate

Вот длинная статья, в которой показано, как интегрировать JSF 2.0 , Весна и Зимняя спячка вместе. В конце статьи вы создадите страницу, на которой отобразится список существующих клиентов из базы данных и функция “добавить клиента”, позволяющая пользователю добавлять нового клиента в базу данных.

P.S В этом примере мы используем базу данных MySQL и развертываем ее в веб-контейнере Tomcat 6.

1. Структура проекта

Структура каталогов этого примера

2. Сценарий таблицы

Создайте таблицу клиентов и вставьте 2 фиктивные записи.

DROP TABLE IF EXISTS `mkyongdb`.`customer`;
CREATE TABLE  `mkyongdb`.`customer` (
  `CUSTOMER_ID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `NAME` varchar(45) NOT NULL,
  `ADDRESS` varchar(255) NOT NULL,
  `CREATED_DATE` datetime NOT NULL,
  PRIMARY KEY (`CUSTOMER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

insert into mkyongdb.customer(customer_id, name, address, created_date)
values(1, 'mkyong1', 'address1', now());
insert into mkyongdb.customer(customer_id, name, address, created_date)
values(2, 'mkyong2', 'address2', now());

3. Вещи в спящем режиме

Класс модели и файл отображения гибернации для таблицы клиентов.

Файл: Customer.java

package com.mkyong.customer.model;

import java.util.Date;

public class Customer{
	
	public long customerId;
	public String name;
	public String address;
	public Date createdDate;
	
	//getter and setter methods
	
}

Файл: Customer.hbm.xml





    
 
        
            
            
        
        
            
        
        
            
        
        
            
        
    

4. Весенние штучки

Классы Spring BO и DAO для бизнес-логики и взаимодействия с базами данных.

Файл: Файл:

package com.mkyong.customer.bo;
 
import java.util.List;
 
import com.mkyong.customer.model.Customer;
 
public interface CustomerBo{
 
	void addCustomer(Customer customer);
 
	List findAllCustomer();
 
}

Файл: CustomerBoImpl.java

package com.mkyong.customer.bo.impl;
 
import java.util.List;
import com.mkyong.customer.bo.CustomerBo;
import com.mkyong.customer.dao.CustomerDao;
import com.mkyong.customer.model.Customer;
 
public class CustomerBoImpl implements CustomerBo{
 
	CustomerDao customerDao;
 
	public void setCustomerDao(CustomerDao customerDao) {
		this.customerDao = customerDao;
	}
 
	public void addCustomer(Customer customer){
 
		customerDao.addCustomer(customer);
 
	}
 
	public List findAllCustomer(){
 
		return customerDao.findAllCustomer();
	}
}

Файл: CustomerDao.java

package com.mkyong.customer.dao;
 
import java.util.List;
 
import com.mkyong.customer.model.Customer;
 
public interface CustomerDao{
 
	void addCustomer(Customer customer);
 
	List findAllCustomer();
 
}

Файл: CustomerDaoImpl.java

package com.mkyong.customer.dao.impl;
 
import java.util.Date;
import java.util.List;
 
import com.mkyong.customer.dao.CustomerDao;
import com.mkyong.customer.model.Customer;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
 
public class CustomerDaoImpl extends 
       HibernateDaoSupport implements CustomerDao{
 
	public void addCustomer(Customer customer){
 
		customer.setCreatedDate(new Date());
		getHibernateTemplate().save(customer);
 
	}
 
	public List findAllCustomer(){
 
		return getHibernateTemplate().find("from Customer");
 
	}
}

Файл: Файл:



 
   	
   		
   	
 
   	
   		
   	
 

5. Весна + База данных

Настройте подробную информацию о базе данных весной.

Файл: db.свойства

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mkyongdb
jdbc.username=root
jdbc.password=password

Файл: DataSource.xml


 
 
   
		WEB-INF/classes/config/database/db.properties
   

 
  
	
	
	
	
  
 

6. Весна + Зимняя спячка

Интегрируйте Hibernate и Spring через LocalSessionFactoryBean .

Файл: HibernateSessionFactory.xml



 


 
    
      
    
 
    
       
         org.hibernate.dialect.MySQLDialect
         true
       
    
 
    
	
          com/mkyong/customer/hibernate/Customer.hbm.xml
	
     	
 


7. JSF 2.0

JSF удалось вызвать BO Spring, чтобы добавить или получить записи клиентов из базы данных.

Файл: CustomerBean.java

package com.mkyong;

import java.io.Serializable;
import java.util.List;

import com.mkyong.customer.bo.CustomerBo;
import com.mkyong.customer.model.Customer;

public class CustomerBean implements Serializable{
 
	//DI via Spring
	CustomerBo customerBo;
	
	public String name;
	public String address;
	//getter and setter methods

	public void setCustomerBo(CustomerBo customerBo) {
		this.customerBo = customerBo;
	}
 
	//get all customer data from database
	public List getCustomerList(){
		return customerBo.findAllCustomer();
	}
	
	//add a new customer data into database
	public String addCustomer(){
		
		Customer cust = new Customer();
		cust.setName(getName());
		cust.setAddress(getAddress());
		
		customerBo.addCustomer(cust);
		
		clearForm();
		
		return "";
	}
	
	//clear form values
	private void clearForm(){
		setName("");
		setAddress("");
	}
	
}

Страница JSF для отображения существующих записей клиентов через h:DataTable и несколько текстовых компонентов, позволяющих пользователю вставлять новые записи клиентов в базу данных.

Файл: default.xhtml по умолчанию





    
    	
    
 
    
 
    	

JSF 2.0 + Spring + Hibernate Example

Customer ID #{c.customerId} Name #{c.name} Address #{c.address} Created Date #{c.createdDate}

Add New Customer

Name : Address :

8. JSF 2.0 + Пружина

Интегрируйте JSF 2.0 с Spring, смотрите подробное объяснение здесь – Пример интеграции JSF 2.0 + Spring

Файл: applicationContext.xml


 
	
	
	
 
	
	
 

Файл: faces-config.xml



 
	
    	
    		org.springframework.web.jsf.el.SpringBeanFacesELResolver
    	
  	
 	
	
		customer
		com.mkyong.CustomerBean
		session
		
			customerBo
			#{customerBo}
		
	
 

Файл: web.xml



 
  JavaServerFaces

  
  
	
		org.springframework.web.context.ContextLoaderListener
	
  
  
	
		org.springframework.web.context.request.RequestContextListener
	
  

  
  
    javax.faces.PROJECT_STAGE
    Development
  
 
  
  
    faces/default.xhtml
  
 
  
  
    Faces Servlet
    javax.faces.webapp.FacesServlet
    1
  
 
  
  
    Faces Servlet
    /faces/*
  
  
    Faces Servlet
    *.jsf
  
  
    Faces Servlet
    *.faces
  
  
    Faces Servlet
    *.xhtml
  
 

9. Демонстрация

Запустите его, заполните данные клиента и нажмите кнопку “Отправить”.

Скачать Исходный Код

Ссылка

  1. Пример интеграции JSF 2.0 + Spring
  2. Пример интеграции Распорки + Пружина + Гибернация

Оригинал: “https://mkyong.com/jsf2/jsf-2-0-spring-hibernate-integration-example/”