java - Hibernate 不连接 MySql

标签 java mysql sql database hibernate

停留在这个地方我是 hibernate 的新手,在观看教程后制作了一个示例代码但是我被困在将 hibernate 与 MySql 连接起来。

这里是hibernate.cfg.xml放在源码文件夹中

    <?xml version='1.0' encoding='utf-8'?>

    <!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License: 
        GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the 
        lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. -->
    <hibernate-configuration
        xmlns="http://www.hibernate.org/xsd/hibernate-configuration"
        xsi:schemaLocation="http://www.hibernate.org/xsd/hibernate-configuration
        hibernate-configuration-4.0.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <session-factory>
            <!-- Database connection settings -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
            <property name="connection.username">root</property>
            <property name="connection.password">root</property>

            <!-- JDBC connection pool (use the built-in) -->
            <property name="connection.pool_size">1</property>

            <!-- SQL dialect -->
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

            <!-- Enable Hibernate's automatic session context management -->
            <property name="current_session_context_class">thread</property>

            <!-- Disable the second-level cache -->
            <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider
            </property>
            <property name="current_session_context_class">thread</property>

            <!-- Echo all executed SQL to stdout -->
            <property name="show_sql">true</property>

            <!-- Drop and re-create the database schema on startup -->
            <property name="hbm2ddl.auto">create</property>
            <mapping class="com.javapapers.UserDetails" />
        </session-factory>
    </hibernate-configuration>

这是我的 HibernateTest.java 文件

package com.javapapers;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        UserDetails user=new UserDetails();
        user.setUserId(1);
        user.setUserName("Mannu");
        System.out.println("Here");
        SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();
        System.out.println("Not even printed");
        Session session=sessionFactory.openSession();
        session.beginTransaction();
        session.save(user);
        session.getTransaction().commit();
    }

}

这是UserDetails.java

    package com.javapapers;

    import javax.persistence.Entity;
    import javax.persistence.Id;

    @Entity
    public class UserDetails {
        @Id
        private int userId;
        private String userName;
        public int getUserId() {
            return userId;
        }
        public void setUserId(int userId) {
            this.userId = userId;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
    }

这是错误报告

    Here
    Nov 11, 2015 2:23:03 PM org.hibernate.Version logVersion
    INFO: HHH000412: Hibernate Core {5.0.2.Final}
    Nov 11, 2015 2:23:03 PM org.hibernate.cfg.Environment <clinit>
    INFO: HHH000206: hibernate.properties not found
    Nov 11, 2015 2:23:03 PM org.hibernate.cfg.Environment buildBytecodeProvider
    INFO: HHH000021: Bytecode provider name : javassist
    Exception in thread "main" org.hibernate.internal.util.config.ConfigurationException: Unable to perform unmarshalling at line number 10 and column 56 in RESOURCE hibernate.cfg.xml. Message: cvc-elt.1: Cannot find the declaration of element 'hibernate-configuration'.
        at org.hibernate.boot.cfgxml.internal.JaxbCfgProcessor.unmarshal(JaxbCfgProcessor.java:133)
        at org.hibernate.boot.cfgxml.internal.JaxbCfgProcessor.unmarshal(JaxbCfgProcessor.java:65)
        at org.hibernate.boot.cfgxml.internal.ConfigLoader.loadConfigXmlResource(ConfigLoader.java:57)
        at org.hibernate.boot.registry.StandardServiceRegistryBuilder.configure(StandardServiceRegistryBuilder.java:163)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:259)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:245)
        at com.javapapers.HibernateTest.main(HibernateTest.java:15)
    Caused by: javax.xml.bind.UnmarshalException
     - with linked exception:
    [org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 56; cvc-elt.1: Cannot find the declaration of element 'hibernate-configuration'.]
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:420)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:401)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:374)
        at org.hibernate.boot.cfgxml.internal.JaxbCfgProcessor.unmarshal(JaxbCfgProcessor.java:126)
        ... 6 more
    Caused by: org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 56; cvc-elt.1: Cannot find the declaration of element 'hibernate-configuration'.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1906)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:746)
    at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.startElement(ValidatorHandlerImpl.java:570)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(ValidatingUnmarshaller.java:86)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:60)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.StAXEventConnector.handleStartElement(StAXEventConnector.java:246)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.StAXEventConnector.bridge(StAXEventConnector.java:115)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:398)
    ... 8 more

最佳答案

像那样创建 SessionFactory。它适用于 Hibernate 4.3。

Configuration configuration = new Configuration();
configuration.configure();
private static ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
private static SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

在 main 中这样做完全违反了工厂模式。为其创建单独的类。

关于java - Hibernate 不连接 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647434/

相关文章:

java - 如何拆分字符串值并重新排列字符

java - 无法在 Java 中使用自定义比较器

c++ - sqlConnection->Open() 不起作用

mysql - 为什么这个日期范围查询这么慢?

php - PHP 和 MySql 中的时间戳查询已更新

mysql更新加入

java - Android/Java异步图片下载任务不停运行

java - 为多个源生成唯一 ID

php - 上传文件大小

sql - 如何在sql中选择连续日期