Knowledge Walls
J2EE Technologies Tutorial
Hyderabad, Andhra Pradesh, India
How to do CRUD actions using LocalContainerEntityManagerFactoryBean with JPA Spring Hibernate Framework
4396 Views
Hints 
LocalContainerEntityManagerFactoryBean Entity Manage Factory of JPA which is automatically manages the transactions for the web based applications. Performing persist, merge, get and remove actions using EntityManager with JPA, Spring and Hibernate framework technologies.

Example
add:    em.persist(JPA_Entity_Instance);
edit:    em.merge(JPA_Entity_Instance);
delete: em.remove(JPA_Entity_Instance);
get:     em.get(JPA_Entity_Instance);
Output: Browser 
Project explorer preview 
Consumer.java
package com.knowledgewalls.entity;


import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
public class Consumer {
    @Id @GeneratedValue(strategy=GenerationType.TABLE)
    private int consumer_id;
    private String consumer_name;
    
    public int getConsumer_id() {
        return consumer_id;
    }
    public void setConsumer_id(int consumer_id) {
        this.consumer_id = consumer_id;
    }
    public String getConsumer_name() {
        return consumer_name;
    }
    public void setConsumer_name(String consumer_name) {
        this.consumer_name = consumer_name;
    }    
}
ConsumerDAO.java
package com.knowledgewalls.dao;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.knowledgewalls.entity.Consumer;

@Repository
@Transactional
public class ConsumerDAO {
    
    @PersistenceContext
    EntityManager em;
    
    public void saveConsumer(Consumer consumer){
        try {
            em.persist(consumer);
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
    
    public Consumer getConsumer(int consumer_id){
        try {
            return em.find(Consumer.class, consumer_id);
        }
        catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
    
    public void updateConsumer(Consumer consumer){
        try {
            em.merge(consumer);
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
    
    public void deleteConsumer(int consumer_id){
        try {
            em.remove(this.getConsumer(consumer_id));
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}
StudentInfoController.java
package com.knowledgewalls.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.google.gson.Gson;
import com.knowledgewalls.dao.ConsumerDAO;
import com.knowledgewalls.entity.Consumer;

@Controller
public class StudentInfoController {
    
    @Autowired
    ConsumerDAO consumerDAO;
    
    private String jsonToString(Object json_object){
        try {
            return (new Gson().toJson(json_object));
        }
        catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }
    
    @RequestMapping(value="/doCrudOnConsumer",method=RequestMethod.GET)
    public @ResponseBody String addUsers(){
        {
            Consumer consumer = new Consumer();
                consumer.setConsumer_name("Consumer");
            consumerDAO.saveConsumer(consumer);
            
            Consumer persistedConsumer = consumerDAO.getConsumer(1);
            System.out.println(jsonToString(persistedConsumer));
            
            persistedConsumer.setConsumer_name("Updated Consumer");
            consumerDAO.updateConsumer(persistedConsumer);
            
            Consumer updatedConsumer = consumerDAO.getConsumer(1);
            System.out.println(jsonToString(updatedConsumer));
            
            consumerDAO.deleteConsumer(1);
            
            System.out.println(consumerDAO.getConsumer(1));
        }
        
        return "Consumer saved successfully!";
    }
}
Persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" >

  <persistence-unit name="hibernatePersistenceUnit">
          <properties>
            <property name="hibernate.hbm2ddl.auto" value="create" />
        </properties>
  </persistence-unit>

</persistence>
Beans-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">

    <context:component-scan base-package="com.knowledgewalls" />
    <mvc:annotation-driven />
    <tx:annotation-driven transaction-manager="transactionManager" />
    
    <bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceXmlLocation" value="classpath*:persistence.xml" />
        <property name="persistenceUnitName" value="hibernatePersistenceUnit" />
        <property name="dataSource" ref="dataSource"/>
        <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
    </bean>
    
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/test" />
        <property name="username" value="root" />
        <property name="password" value="mysql" />
        <property name="initialSize" value="5" />
        <property name="maxActive" value="10" />
    </bean>
    
    <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="database" value="MYSQL"></property>
        <property name="showSql" value="true"></property>
        <property name="generateDdl" value="false"></property>
        <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect"></property>
    </bean>
    
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
         <property name="entityManagerFactory" ref="emf" />
    </bean>
    
    <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

</beans>
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Hibernate019_CRUD</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>beans</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>beans</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>
Output: SQL
create table Consumer
(consumer_id integer not null,
consumer_name varchar(255),
primary key (consumer_id)) ENGINE=InnoDB;

create table hibernate_sequences
(sequence_name varchar(255),
sequence_next_hi_value integer);
Best Lessons of "Hibernate 3.0 Examples"
Top lessons which are viewed more times.
  Copyright © 2014 Knowledge walls, All rights reserved
KnowledgeWalls
keep your tutorials and learnings with KnowledgeWalls. Don't lose your learnings hereafter. Save and revise it whenever required.
Click here for more details