1

This is my interface for CRUD operation and using this add,update,delete,search operation

 package com.cnsi.dao;

    import java.util.List;

    import com.cnsi.modal.User;


    public interface UserDao {
        public void add(User u);
        public void edit(User u);
        public void delete(int id);
        public User getInterfaceId(int id);
        public List<?> getAllInterface();
        }
     this interface will help me to achieve abstraction

An implementation class ,

this class implementing the add,update,delete,search methods

package com.cnsi.dao.Impl;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;

import org.springframework.stereotype.Repository;

import com.cnsi.dao.UserDao;
import com.cnsi.modal.User;

@Repository
public class JpaUserDaoImpl implements UserDao {


    EntityManagerFactory entityManagerFactory;

    EntityManager em;



    @PostConstruct
    public void init() {
        em=entityManagerFactory.createEntityManager();
    } 

    @Override
    public void add(User u) {
        em.persist(u);
    }

    @Override
    public void edit(User u) {
        em.merge(u);

    }

    @Override
    public void delete(int id) {


        em.remove(getInterfaceId(id));

    }

    @Override
    public User getInterfaceId(int id) {

        return (User)em.find(User.class, id);
    }

    @Override
    public List<User> getAllInterface() {

        return em.createQuery("from user").getResultList();
    }

}

my spring-context file,

<?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-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/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:component-scan base-package="com.javapapers.spring.mvc" />
    <context:component-scan base-package="com.cnsi.dao.Impl" />


    <mvc:annotation-driven />

    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>
    <!-- <jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence/spitterPU" 
        /> -->

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@10.86.24.7:1521:wahipaaD" />
        <property name="username" value="mddemo" />
        <property name="password" value="mddemo" />
    </bean>

    <bean id="jpaVendorAdapter"
        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="database" value="ORACLE" />
        <property name="showSql" value="true" />
        <property name="generateDdl" value="false" />
        <property name="databasePlatform" value="org.hibernate.dialect.OracleDialect" />
    </bean>


    <bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />

    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />

    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceXmlLocation" value="classpath:META-INF/ spring-persistence.xml" />
        <property name="persistenceUnitName" value="personPersistenceUnit" />
        <property name="dataSource" ref="dataSource" />
        <!-- <property name="jpaVendorAdapter" ref="jpaVendorAdapter" /> -->
        <property name="jpaDialect" ref="jpaDialect" />
    </bean>
    <!-- <bean class="com.cnsi.dao.Impl.JpaUserDao" id="jpaUserDao">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean> -->

</beans>

but i am getting null pointer exception when try to get entity manager object 'entityManagerFactory.createEntityManager()' this method

below jsp i am using for add

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<?xml version="1.0" encoding="ISO-8859-1" ?>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Add team page</title>
</head>
<body>
    <h1>Add User page</h1>
    <p>Here you can add a new User.</p>
    <form:form method="POST" commandName="user"
        action="${pageContext.request.contextPath}/view/add">
        <table>
            <tbody>
                <tr>
                    <td>User Name:</td>
                    <td><form:input path="name" /></td>
                </tr>
                <tr>
                    <td>Id:</td>
                    <td><form:input path="id" /></td>
                </tr>
                <tr>
                    <td><input type="submit" value="Add" /></td>
                    <td></td>
                </tr>
            </tbody>
        </table>
    </form:form>

    <p>
        <a href="${pageContext.request.contextPath}/index.html">Home page</a>
    </p>
</body>
</html>

below jsp using for edit

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<?xml version="1.0" encoding="ISO-8859-1" ?>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Edit team page</title>
</head>
<body>
    <h1>Edit team page</h1>
    <p>Here you can edit the existing team.</p>
    <p>${message}</p>
    <form:form method="POST" commandName="user"
        action="${pageContext.request.contextPath}/view/edit/${user.id}.html">
        <table>
            <tbody>
                <tr>
                    <td>User Name:</td>
                    <td><form:input path="name" /></td>
                </tr>
                <tr>
                    <td>Id:</td>
                    <td><form:input path="id" /></td>
                </tr>
                <tr>
                    <td><input type="submit" value="Edit" /></td>
                    <td></td>
                </tr>
            </tbody>
        </table>
    </form:form>

    <p>
        <a href="${pageContext.request.contextPath}/home.html">Home page</a>
    </p>
</body>
</html>

i am getting null point exception please help me to do simple crud operation

2 Answers 2

1

You don't inject entityManagerFactory into your DAO , so it's null inside the init() method.

Please change:

EntityManagerFactory entityManagerFactory;

to:

@Autowired
EntityManagerFactory entityManagerFactory;
Sign up to request clarification or add additional context in comments.

1 Comment

Changed but i am getting below error, java.lang.NoSuchMethodError: org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.getJpaVendorAdapter()Lorg/springframework/orm/jpa/JpaVendorAdapter;
0

Since it is configured in your spring-context, you don't need your init method. Simply put

@PersistenceContext
private EntityManager em;

and it should work.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.