hibernate_Eclipse+hibernate+mysql配置

原工作环境是myecilpse,考虑到myeclipse越来越冗余,且myeclipse集成度高,封装了较多操作,很多细节都是傻瓜式配置,不便于成长,依赖度太高,遂工作平台从myeclipse转到eclipse下。

工具:

eclipse

hibernate eclipse tool

hibernate orm

mysql jdbc driver

slf4j

log4j

下载各工具后,hibernate eclipse压缩包放到eclipse dropin目录下解压缩,启动eclipse.

1,创建java project test,hibernate orm下载解压后,hibernate3.jar以及lib目录下requeire目录下jar包导入工程;把mysql jdbc driver jar包导入工程,

2,配置hibernate映射文件:hibernate.cfg.xml

     到hibernate-distribution-3.5.0-Final\project\tutorials\web\src\main\resources目录下把hibernate配置文件拷贝到test/src目录下,根据具体情况修改配置文件,配置见文尾附录;

3,创建映射文件,映射类: Event.hbm.xml,Event类

    test工程下创建包:com.xinju.hibernate,包下创建配置文件 Event.hbm.xml,映射类:,代码见附录

4,运行测试类。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
Exception in thread "main" java.lang.ExceptionInInitializerError
	at com.xinju.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:17)
	at com.xinju.hibernate.test.main(test.java:9)
Caused by: java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
	at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:223)
	at org.slf4j.LoggerFactory.bind(LoggerFactory.java:120)
	at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111)
	at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:269)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)
	at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:165)
	at com.xinju.hibernate.HibernateUtil.<clinit>(HibernateUtil.java:13)
	... 1 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
	at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 9 more

或者是报错:

Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/apache/log4j/Level

运行报错,原因在于hibernate require包不包含slf4j引用包,需下载slf4j包,包的版本根据slf4j-api.1.5.8.jar,下载slf4j1.5.8,解压slf4j-log4j12-1.5.8.jar以及log4j-1.2.17.jar

这一部分官方文档3.5节日志部分有详细描述。

修改后运行如下:

16:02:48,939  INFO Environment:564 - Hibernate 3.5.0-Final
16:02:48,939  INFO Environment:597 - hibernate.properties not found
16:02:48,955  INFO Environment:775 - Bytecode provider name : javassist
16:02:48,955  INFO Environment:656 - using JDK 1.4 java.sql.Timestamp handling
16:02:49,033  INFO Configuration:1518 - configuring from resource: /hibernate.cfg.xml
16:02:49,033  INFO Configuration:1495 - Configuration resource: /hibernate.cfg.xml
16:02:49,095  INFO Configuration:655 - Reading mappings from resource : com/xinju/hibernate/Event.hbm.xml
16:02:49,158  INFO HbmBinder:348 - Mapping class: com.xinju.hibernate.Event -> EVENT
16:02:49,158  INFO Configuration:1633 - Configured SessionFactory: null
16:02:49,205  INFO DriverManagerConnectionProvider:64 - Using Hibernate built-in connection pool (not for production use!)
16:02:49,205  INFO DriverManagerConnectionProvider:65 - Hibernate connection pool size: 2
16:02:49,205  INFO DriverManagerConnectionProvider:68 - autocommit mode: false
16:02:49,205  INFO DriverManagerConnectionProvider:103 - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/test
16:02:49,205  INFO DriverManagerConnectionProvider:109 - connection properties: {user=root, password=****}
16:02:49,580  INFO SettingsFactory:117 - RDBMS: MySQL, version: 5.6.12-log
16:02:49,580  INFO SettingsFactory:118 - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.17 ( Revision: ${bzr.revision-id} )
16:02:49,595  INFO Dialect:222 - Using dialect: org.hibernate.dialect.MySQLDialect
16:02:49,595  INFO TransactionFactoryFactory:59 - Using default transaction strategy (direct JDBC transactions)
16:02:49,595  INFO TransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
16:02:49,595  INFO SettingsFactory:169 - Automatic flush during beforeCompletion(): disabled
16:02:49,595  INFO SettingsFactory:173 - Automatic session close at end of transaction: disabled
16:02:49,595  INFO SettingsFactory:180 - JDBC batch size: 15
16:02:49,595  INFO SettingsFactory:183 - JDBC batch updates for versioned data: disabled
16:02:49,595  INFO SettingsFactory:188 - Scrollable result sets: enabled
16:02:49,611  INFO SettingsFactory:196 - JDBC3 getGeneratedKeys(): enabled
16:02:49,611  INFO SettingsFactory:204 - Connection release mode: auto
16:02:49,611  INFO SettingsFactory:228 - Maximum outer join fetch depth: 2
16:02:49,611  INFO SettingsFactory:231 - Default batch fetch size: 1
16:02:49,611  INFO SettingsFactory:235 - Generate SQL with comments: disabled
16:02:49,611  INFO SettingsFactory:239 - Order SQL updates by primary key: disabled
16:02:49,611  INFO SettingsFactory:243 - Order SQL inserts for batching: disabled
16:02:49,611  INFO SettingsFactory:410 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
16:02:49,611  INFO ASTQueryTranslatorFactory:47 - Using ASTQueryTranslatorFactory
16:02:49,611  INFO SettingsFactory:251 - Query language substitutions: {}
16:02:49,611  INFO SettingsFactory:256 - JPA-QL strict compliance: disabled
16:02:49,611  INFO SettingsFactory:261 - Second-level cache: enabled
16:02:49,611  INFO SettingsFactory:265 - Query cache: disabled
16:02:49,611  INFO SettingsFactory:395 - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge
16:02:49,611  INFO RegionFactoryCacheProviderBridge:61 - Cache provider: org.hibernate.cache.NoCacheProvider
16:02:49,611  INFO SettingsFactory:275 - Optimize cache for minimal puts: disabled
16:02:49,611  INFO SettingsFactory:284 - Structured second-level cache entries: disabled
16:02:49,611  INFO SettingsFactory:304 - Echoing all SQL to stdout
16:02:49,611  INFO SettingsFactory:313 - Statistics: disabled
16:02:49,611  INFO SettingsFactory:317 - Deleted entity synthetic identifier rollback: disabled
16:02:49,611  INFO SettingsFactory:332 - Default entity-mode: pojo
16:02:49,611  INFO SettingsFactory:336 - Named query checking : enabled
16:02:49,611  INFO SettingsFactory:340 - Check Nullability in Core (should be disabled when Bean Validation is on): enabled
16:02:49,626  INFO SessionFactoryImpl:199 - building session factory
16:02:49,736  INFO SessionFactoryObjectFactory:105 - Not binding factory to JNDI, no JNDI name configured
Hibernate: insert into EVENT (title, date) values (?, ?)


数据库确认记录导入。


附:

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <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">aaa</property>

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

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

        <!-- Enable Hibernate's current session context -->
        <property name="current_session_context_class">org.hibernate.context.ManagedSessionContext</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</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 resource="com/xinju/hibernate/Event.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

映射文件Event.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.xinju.hibernate">

    <class name="Event" table="EVENT">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" />
        </id>
        <property name="title" type="string">
            <column name="title" />
        </property>
        <property name="date" type="date">
            <column name="date" length="10" />
        </property>

    </class>


</hibernate-mapping>

   Event实体类:

package com.xinju.hibernate;

// Generated 2015-2-27 11:46:36 by Hibernate Tools 3.4.0.CR1

import java.util.Date;

/**
 * Event generated by hbm2java
 */
public class Event implements java.io.Serializable {

	private Integer id;
	private String title;
	private Date date;

	public Event() {
	}

	public Event(String title, Date date) {
		this.title = title;
		this.date = date;
	}

	public Integer getId() {
		return this.id;
	}

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

	public String getTitle() {
		return this.title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public Date getDate() {
		return this.date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

}

hibernate工具类HibernateUtil:

package com.xinju.hibernate;

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

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}


测试代码:

package com.xinju.hibernate;
import java.util.Date;
import org.hibernate.Session;

public class test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Event e = new Event("t27",new Date());
		Session session = HibernateUtil.getSessionFactory().openSession();
		session.getTransaction().begin();
		session.save(e);
		session.getTransaction().commit();		
	}
}


有问题多读官方文档,自己动手实践。

转载于:https://my.oschina.net/u/856051/blog/380477

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值