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);
|
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;
}
}
|
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!";
}
}
|
<?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>
|
<?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>
|
<?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>
|
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);
|