Java - Spring MVC integriert Hibernate5-Zugriffsfehler. Die Ressource cfg.xml konnte nicht gefunden werden
为情所困
为情所困 2017-05-17 10:03:38
0
2
2071

Spring MVC integriert das Hibernate5-Framework – die Datenbankverbindung und andere Informationen wurden in der Datei „dispatcher-servlet.xml“ konfiguriert. Ich habe eine einfache Funktion zum Erstellen einer neuen Datentabelle geschrieben (bei der Ausführung wurde kein Fehler gemeldet). , aber HTTP-Status 500-Fehler org wurde beim Zugriff gemeldet. hibernate.internal.util.config.ConfigurationException: Die cfg.xml-Ressource [hibernate.cfg.xml] konnte nicht gefunden werden, aber es ist seltsam, dass die Datentabelle erfolgreich erstellt wurde, aber nein Daten wurden geschrieben.
Was mich wundert, ist, dass sessionFactoryBean anstelle der Datei hibernate.cfg.xml verwendet wird, nachdem ich die Datei hibernate.cfg.xml nicht erstellt habe. Einige spezifische Dateien und Fehler-Screenshots sind wie folgt:

dispatcher-servlet.xml-Datei

<?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"
       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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 扫描使用注解的类所在包 -->
    <context:component-scan base-package="com.hiber.*"/>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/hiber?useUnicode=yes&amp;characterEncoding=UTF-8" />
        <property name="username" value="root" />
        <property name="password" value="3443"/>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 注入数据源 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 找到实体包(pojo) -->
        <property name="packagesToScan" value="com.hiber.*" />
        <property name="hibernateProperties">
            <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</prop>
            <prop key="hibernate.hbm2ddl.auto">create</prop>
            <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>

    <bean id="entityManagerFactoryBean" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 找到实体包(pojo) -->
        <property name="packagesToScan" value="com.hiber.*" />
        <!--指定jpa适配器-->
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <!--<!&ndash;指定jpa属性&ndash;>-->
        <!--<property name="jpaProperties">-->
            <!--<props>-->
                <!--<prop key="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</prop>-->
                <!--<prop key="hibernate.hbm2ddl.auto">create</prop>-->
                <!--<prop key="hibernate.show_sql">true</prop>-->
            <!--</props>-->
        <!--</property>-->
    </bean>

    <!-- 配置hibernate事务管理器 -->
    <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <tx:annotation-driven />
</beans>

Message.java-Datei

package com.hiber.entity;

import javax.persistence.*;

@Entity
public class Message{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    int id;
    @Column(nullable = false)
    String text;

    public Message(String text) {
        setText(text);
    }
    public Message(){}

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}

IndexController.java-Datei

package com.hiber.controllers;

import com.hiber.entity.Message;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class IndexController {
    @RequestMapping(value = "/persist")
    public String saveMessage(){
        Message message = new Message("Hello, world");
        StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
                .configure()
                .build();
        SessionFactory sessionFactory =  new MetadataSources(registry).buildMetadata().buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        session.persist(message);
        tx.commit();
        return "数据添加成功!";
    }
}

Browserfehler-Screenshot

Screenshot der erfolgreichen Erstellung einer Datentabelle

Projektstruktur

Bitte helfen Sie, das Problem herauszufinden. Vielen Dank im Voraus!

为情所困
为情所困

Antworte allen(2)
黄舟

Hibernate5.2版本以上这样写:

Message message = new Message("Hello,world!");
        Configuration configuration = new Configuration();
        StandardServiceRegistry registry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        session.persist(message);
        tx.commit();
        return "数据添加成功!";

org.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [hibernate.cfg.xml]的问题解决了,但又出现了org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment],同样求助!

PHPzhong

查看web.xml配置,如下:

<!-- 加载Spring -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- spring默认的配置文件名称是:applicationContext.xml,如果是默认则不需要配置 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml,
        /WEB-INF/daoContext.xml</param-value>
</context-param>

其中daoContext.xml中就配置了数据源、sessionFactory,事务管理器、事务;
你的有加这些吗?看错误是没有

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!