JSF 2.0 Spring Hibernate-Integrationsbeispiel

Beispiel für die Integration von JSF 2.0 + Spring + Hibernate

In diesem langen Artikel erfahren Sie, wie SieJSF 2.0,Spring undHibernate zusammen integrieren. Am Ende des Artikels erstellen Sie eine Seite mit einer Liste der vorhandenen Kunden aus der Datenbank und einer Funktion zum Hinzufügen von Kunden, mit der Benutzer einen neuen Kunden zur Datenbank hinzufügen können.

P.S In this example, we are using MySQL database and deploy to Tomcat 6 web container.

1. Projektstruktur

Verzeichnisstruktur dieses Beispiels

jsf2-spring-hibernate-folder-1

jsf2-spring-hibernate-folder-2

2. Tabellenskript

Erstellen Sie eine Kundentabelle und fügen Sie zwei Dummy-Datensätze ein.

DROP TABLE IF EXISTS `exampledb`.`customer`;
CREATE TABLE  `exampledb`.`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 exampledb.customer(customer_id, name, address, created_date)
values(1, 'example1', 'address1', now());
insert into exampledb.customer(customer_id, name, address, created_date)
values(2, 'example2', 'address2', now());

3. Hibernate Stuff

Eine Modellklasse und eine Hibernate-Zuordnungsdatei für die Kundentabelle.

Datei: Customer.java

package com.example.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

}

Datei: Customer.hbm.xml



    

        
            
            
        
        
            
        
        
            
        
        
            
        
    

4. Frühlingssachen

Die BO- und DAO-Klassen von Spring für Geschäftslogik und Datenbankinteraktion.

Datei: CustomerBo.java

package com.example.customer.bo;

import java.util.List;

import com.example.customer.model.Customer;

public interface CustomerBo{

    void addCustomer(Customer customer);

    List findAllCustomer();

}

Datei: CustomerBoImpl.java

package com.example.customer.bo.impl;

import java.util.List;
import com.example.customer.bo.CustomerBo;
import com.example.customer.dao.CustomerDao;
import com.example.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();
    }
}

Datei: CustomerDao.java

package com.example.customer.dao;

import java.util.List;

import com.example.customer.model.Customer;

public interface CustomerDao{

    void addCustomer(Customer customer);

    List findAllCustomer();

}

Datei: CustomerDaoImpl.java

package com.example.customer.dao.impl;

import java.util.Date;
import java.util.List;

import com.example.customer.dao.CustomerDao;
import com.example.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");

    }
}

Datei: CustomerBean.xml



    
        
    

    
        
    

5. Frühling + Datenbank

Konfigurieren Sie die Datenbankdetails im Frühjahr.

Datei: db.properties

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

Datei: DataSource.xml



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


  
    
    
    
    
  

6. Frühling + Winterschlaf

Integrieren Sie Ruhezustand und Feder überLocalSessionFactoryBean.

Datei: HibernateSessionFactory.xml






    
      
    

    
       
         org.hibernate.dialect.MySQLDialect
         true
       
    

    
    
          com/example/customer/hibernate/Customer.hbm.xml
    
     


7. JSF 2.0

JSF verwaltete Bean, um Spring's BO aufzurufen und Kundendatensätze aus der Datenbank hinzuzufügen oder abzurufen.

Datei: CustomerBean.java

package com.example;

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

import com.example.customer.bo.CustomerBo;
import com.example.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("");
    }

}

Eine JSF-Seite zum Anzeigen vorhandener Kundendatensätze überh:dataTable und einige Textkomponenten, damit Benutzer neue Kundendatensätze in die Datenbank einfügen können.

Datei: 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 + Frühling

Integrieren Sie JSF 2.0 in Spring. Weitere Informationen finden Sie hier -JSF 2.0 + Spring integration example

Datei: applicationContext.xml



    
    
    

    
    

Datei :aces-config.xml



    
        
            org.springframework.web.jsf.el.SpringBeanFacesELResolver
        
    

    
        customer
        com.example.CustomerBean
        session
        
            customerBo
            #{customerBo}
        
    

Datei: 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. Demo

Führen Sie es aus, geben Sie die Kundendaten ein und klicken Sie auf die Schaltfläche "Senden".

jsf2-spring-hibernate-example-1

jsf2-spring-hibernate-example-2

Quellcode herunterladen

Laden Sie es herunter -JSF-2-Spring-Hibernate-Integration-Example.zip (19KB)