Как использовать Spring Data JPA со средами Spring и Hibernate БЕЗ springboot и maven - PullRequest
0 голосов
/ 05 июня 2019

Некоторые предыстории того, что я делаю: Я новичок в весне и зимней спячке и освоил все основы. Я пытаюсь разработать веб-приложение, которое имеет доступ к базе данных MySQL.

Фреймворки, которые я использую: - Spring (Spring MVC, внедрение зависимостей) - Hibernate (для общения с базой данных) - Валидатор Hibernate (для проверки полей ввода формы)

Мое веб-приложение размещено локально на: - Tomcat 9

База данных, которую я использую: - MySQL 8.0

Мое веб-приложение состоит из: - класс контроллера - класс сервисного уровня и - класс слоя DAO

Реализация моего DAO: - используя Hibernate Query Language (HQL)

Сейчас я пытаюсь заменить методы HQL для извлечения данных из базы данных для использования репозитория Spring Data JPA.

Я просмотрел тонны учебников и руководств, но они используют Springboot или Maven ..

Причина, по которой я не использую Maven или Springboot, заключается в том, что я хочу научиться «с нуля» и посмотреть, как все работает, поэтому устранение неполадок проще

Я скачал: весна-данные-Обще-2.1.8.RELEASE.jar & весна-данных JPA-2.1.8.RELEASE.jar

и добавил их в мою библиотеку WEB-INF,

реализация JpaRepository:

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.assignment.entity.Employee;

public interface EmployeeRepository extends JpaRepository<Employee, Integer> {

}

но ничего из этого не работает, так как я продолжал получать ошибки другого типа, когда я пытался решить проблемы, появлялись новые ошибки

вот мой текущий код

весна-MVC-config.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:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util     
        http://www.springframework.org/schema/util/spring-util.xsd">

    <!-- Add support for component scanning -->
    <context:component-scan base-package="com.assignment" />

    <!-- Add support for conversion, formatting and validation support -->
    <mvc:annotation-driven/>

    <!-- Define Spring MVC view resolver -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- Step 1: Define Database DataSource / connection pool -->
    <bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
          destroy-method="close">
        <property name="driverClass" value="com.mysql.cj.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useSSL=false&amp;serverTimezone=UTC" />
        <property name="user" value="root" />
        <property name="password" value="root" /> 

        <!-- these are connection pool properties for C3P0 -->
        <property name="minPoolSize" value="5" />
        <property name="maxPoolSize" value="20" />
        <property name="maxIdleTime" value="30000" />
    </bean>  

    <!-- Step 2: Setup Hibernate session factory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="myDataSource" />
        <property name="packagesToScan" value="com.assignment.entity" />
        <property name="hibernateProperties">
           <props>
              <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
              <prop key="hibernate.show_sql">true</prop>
           </props>
        </property>
   </bean>    

    <!-- Step 3: Setup Hibernate transaction manager -->
    <bean id="myTransactionManager"
            class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <!-- Step 4: Enable configuration of transactional behavior based on annotations -->
    <tx:annotation-driven transaction-manager="myTransactionManager" />

    <!-- Add support for reading .properties file  -->
    <util:properties id="gradeOptions" location="classpath:../grades.properties" /> 

    <!-- Add support for reading web resources: css, images, js, etc ... -->
    <mvc:resources location="/resources/" mapping="/resources/**"></mvc:resources>

    <!-- Load custom message properties file -->
    <bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">

        <property name="basenames" value="resources/errorMessages" />
    </bean>


</beans>

EmployeeRepository.java

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.assignment.entity.Employee;

public interface EmployeeRepository extends JpaRepository<Employee, Integer> {

    public List<Employee> findAll();
}

EmployeeRepositoryServiceImpl.java

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.assignment.dao.EmployeeRepository;
import com.assignment.entity.Employee;

@Service("employeeService")
public class EmployeeRepositoryServiceImpl implements EmployeeRepositoryService {

    @Autowired
    EmployeeRepository theEmployeeRepository;

    @Override
    public List<Employee> findAll() {
        List<Employee> theEmployees = theEmployeeRepository.findAll();
        return theEmployees;
    }

}

Кто-нибудь может научить меня, как правильно добавить Spring Data JPA в мой существующий проект динамического веб-приложения БЕЗ использования Spring Boot & Maven, пожалуйста?

РЕДАКТИРОВАТЬ: или если у кого-то есть хороший учебник, который научит вас интегрировать Spring Data JPA в текущий проект динамического веб-приложения БЕЗ использования Springboot или Maven, пожалуйста, поделитесь, я буду очень признателен! :)

...