原创 史上最简单的Hibernate入门简介收藏

新一篇: Eclipse迎来新时代, 全面支持C++ | 旧一篇: Java陷阱一箩筐----面试题集

其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持。然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。

在这篇文章将不涉及Eclipse, log4j, Struts, Tomcat, XDoclet,和JBoss。本文的目的是演示一下Hibernate的安装过程以及最基本的功能,从而给初学者一个低得不能再低的入门门槛。


下载文件

你需要Java SDK、 Hibernate包、Ant包、和JDBC Driver。

1、Hibernate包下载地址:
http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc

2、Ant包下载地址:
http://apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip

3、JDBC Driver要根据你用的database来定,一般database官方网站上都会有。Hibernate支持常用的database,比如 MySQL, Oracle, PostgreSQL, 和MS-SQL Server。这些数据库都有JDBC Driver:

Oracle JDBC Driver下载地址(下载前必须同意Oracle协议书)
http://otn.oracle.com/software/htdocs/distlic.html?/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html

MySQL JDBC Driver下载地址
http://dev.mysql.com/downloads/connector/j/3.0.html

PostgreSQL JDBC Driver下载地址
http://jdbc.postgresql.org/download.html

MS-SQL Server JDBC Driver下载地址
http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&displaylang=en

4、将Hibernate包和Ant包分别解压至c:\dev\下(此目录不重要,你可以换其它任何目录)。


配置环境

1、你需要添加一个新的环境变量: ANT_HOME,让它指向c:\dev\<你的ANT包所在目录>。并在PATH环境变量里添加%ANT_HOME%\bin。

2、你需要添加一个新的环境变量: JAVA_HOME,让它指向你的j2sdk根目录。并在PATH环境变量里添加%JAVA_HOME%\bin。

3、创建一个项目目录,比如c:\workspace\My1stHibernate。

在项目目录下,另外创建三个目录: src, classes, lib。

在lib目录下,创建两个目录: hibernate和db。

这样你有了如下的文件结构:

c:\workspace\My1stHibernate\
c:\workspace\My1stHibernate\src
c:\workspace\My1stHibernate\classes
c:\workspace\My1stHibernate\lib
c:\workspace\My1stHibernate\lib\hibernate
c:\workspace\My1stHibernate\lib\db

4、将c:\dev\<你的Hibernate包所在目录>\hibernate2.jar文件copy到c:\workspace\My1stHibernate\lib\hibernate下。

将c:\dev\<你的Hibernate包所在目录>\lib\下的所有文件同样copy到c:\workspace\My1stHibernate\lib\hibernate下。

将你的JDBC Driver文件(一般是一个jar文件)copy到c:\workspace\My1stHibernate\lib\db下。


创建数据库

1、用你最喜爱的database软件,创建一个hibernate_test的数据库。

2、在此数据库下,新建一个table名为CUSTOMER

CREATE TABLE CUSTOMER
(
    CID INTEGER NOT NULL PRIMARY KEY,
    USERNAME VARCHAR(12) NOT NULL,
    PASSWORD VARCHAR(12)
);


编写Java文件

public class Customer {
   
    private int id;
    private String username;
    private String password;


    public int getId() {
        return id;
    }

    public String getPassword() {
        return password;
    }

    public String getUsername() {
        return username;
    }

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

    public void setPassword(String password) {
        this.password = password;
    }

    public void setUsername(String username) {
        this.username = username;
    }

}

将此类存为c:\workspace\My1stHibernate\src\Customer.java文件。

编写Test类

import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;

public class Test {

    public static void main(String[] args) {

        try {
            SessionFactory sf =
                new Configuration().configure().buildSessionFactory();
            Session session = sf.openSession();
            Transaction tx = session.beginTransaction();

            for (int i = 0; i < 200; i++) {
                Customer customer = new Customer();
                customer.setUsername("customer" + i);
                customer.setPassword("customer");
                session.save(customer);
            }

            tx.commit();
            session.close();

        } catch (HibernateException e) {
            e.printStackTrace();
        }
    }
}

将此类存为c:\workspace\My1stHibernate\src\Test.java文件。


创建Hibernate映射文件

因为这里只有一个Class --- Customer 和一个Table --- CUSTOMER,你只需要建立一个映射文件--- Customer.hbm.xml,来对应Customer类和CUSTOMER表之间的关系。

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

<hibernate-mapping>
    <class name="Customer" table="CUSTOMER">
        <id name="id" column="CID">
            <generator class="increment" />
        </id>
        <property name="username" column="USERNAME" />
        <property name="password" column="PASSWORD" />
    </class>
</hibernate-mapping>

把此文件存为c:\workspace\My1stHibernate\src\Customer.hbm.xml,和Customer.java放在同一目录下。


编写Ant build.xml文件


你不一定要知道这个build.xml的细节,其实Ant也不是Hibernate所必须的。这里用Ant是为了简化一些任务,比如: 编译、copy、运行,等。

<?xml version="1.0" ?>

<project name="My1stHibernate" default="build" basedir=".">

    <property name="base.dir" value="." />
    <property name="src.dir" value="src" />
    <property name="lib.dir" value="lib" />
    <property name="build.dir" value="classes" />

    <path id="myclasspath">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar" />
        </fileset>
        <pathelement location="${build.dir}" />
    </path>

    <target name="init">
        <mkdir dir="${build.dir}" />
    </target>
   
    <target name="build" depends="init" description="compile the source files">
        <javac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" />
        <copy todir="${build.dir}" >
            <fileset dir="${src.dir}" >
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>

    <target name="run" depends="build">
        <java classpathref="myclasspath" classname="Test" fork="true" />
    </target>

    <target name="clean">
        <delete includeEmptyDirs="true">
            <fileset dir="${build.dir}" />
        </delete>
    </target>

</project>


配置Hibernate描述文件

Hibernate描述文件可以是一个properties或xml 文件,其中最重要的是定义数据库的连接。我这里列出的是一个XML格式的hibernate.cfg.xml描述文件。

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

<hibernate-configuration>
   
    <session-factory name="java:/hibernate/HibernateFactory">
       
        <property name="show_sql">true</property>
        <property name="connection.driver_class">
            oracle.jdbc.driver.OracleDriver <!-- 这里是Oracle 9i的JDBC driver class名 -->
        </property>
        <property name="connection.url">
            jdbc:oracle:oci8:@hibernate_test <!-- 这里是Oracle的hibernate_test数据库URL -->
        </property>
        <property name="connection.username">
            你的数据库用户名
        </property>
        <property name="connection.password">
            你的数据库密码
        </property>
        <property name="dialect">
            net.sf.hibernate.dialect.Oracle9Dialect <!-- 这里是Oracle 9i的Dialect -->
        </property>
       
        <mapping resource="Customer.hbm.xml" /> <!-- 指定Customer的映射文件 -->
       
    </session-factory>
   
</hibernate-configuration>

如果你用的不是Oracle 9i,可到C:\dev\<你的Hibernate包所在目录>\src\hibernate.properties文件里找到你的数据库,然后替换以上相对应的值。


开始运行

到c:\workspace\My1stHibernate下,运行ant run。如果你严格依照以上步骤,应该看到

run:
        [java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).
        [java] log4j:WARN Please initialize the log4j system properly.
        [java] Hibernate: insert into CUSTOMER (USERNAME, PASSWORD, CID) values (?, ?, ?)
BUILD SUCCESSFUL

到你的hibernate_test数据库看一下,在CUSTMOR表里新添了200条记录,但你没有写任何JDBC code。
以后如果你要更换数据库,只需要改变hibernate.cfg.xml描述文件里相应的值即可。


结论

此文是一篇门槛极低的入门介绍。我给一个完全不懂Hibernate的朋友看,他用了不到30分钟就运行了他的第一个Hibernate程序,从此引起了 他对Hibernate的兴趣。但读者必须认识到这只是一个开始,此文实乃窥Hibernate冰山一角上的一颗小冰晶。千里之行始于足下,你可以把此文 当作迈向Hibernate大道的一个起点。



发表于 @ 2004年07月16日 17:07:00|评论(loading...)|编辑

新一篇: Eclipse迎来新时代, 全面支持C++ | 旧一篇: Java陷阱一箩筐----面试题集

评论

#yufanyufan 发表于2005-04-08 14:52:00  IP:
TrackBack来自《使用Hibernate 连接SQL Server 2000》

Ping Back来自:blog.csdn.net
#didostream 发表于2006-02-26 13:16:00  IP: 211.100.21.*
TrackBack来自《Struts Spring Hibernate 框架资源--整理 》

Struts Spring Hibernate 框架资源--整理
#thinkpadleo 发表于2006-02-28 12:28:00  IP: 211.100.21.*
TrackBack来自《Struts Spring Hibernate 框架资源--整理 》

自己看
#shuidisha 发表于2006-02-27 17:09:00  IP: 211.100.21.*
TrackBack来自《Struts Spring Hibernate 框架资源--整理》

Struts Spring Hibernate 框架资源--整理
#doodoofish 发表于2004-07-16 17:13:00  IP: 66.159.225.*
注, 在"编写Ant build.xml文件"一节里应加上"把build.xml文件放c:\workspace\My1stHibernate目录下"。

#疯了的蚊子 发表于2004-07-23 22:39:00  IP: 219.82.40.*
不错!
#张老五 发表于2004-07-29 11:30:00  IP: 61.150.19.*
我就是照着上面的写了,还是还是出现下面的错误(我是不是很菜呀):
C:\Jsbound>ant run
Buildfile: build.xml

init:

build:

run:
[java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.
cfg.Environment).
[java] log4j:WARN Please initialize the log4j system properly.
[java] net.sf.hibernate.JDBCException: Cannot open connection
[java] at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.
java:281)
[java] at net.sf.hibernate.impl.SessionImpl.connect(SessionImpl.java:33
02)
[java] at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java
:3282)
[java] at net.sf.hibernate.transaction.JDBCTransaction.begin(JDBCTransa
ction.java:40)
[java] at net.sf.hibernate.transaction.JDBCTransactionFactory.beginTran
saction(JDBCTransactionFactory.java:19)
[java] at net.sf.hibernate.impl.SessionImpl.beginTransaction(SessionImp
l.java:2227)
[java] at Test.main(Unknown Source)
[java] Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver
for JDBC]Error establishing socket.
[java] at com.microsoft.jdbc.base.BaseExceptions.createException(Unknow
n Source)
[java] at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown S
ource)
[java] at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown S
ource)
[java] at com.microso
#beginner 发表于2004-07-29 01:23:00  IP: 218.94.83.*
For build.xml,

add following line

<pathelement location="." />

to make:

<path id="myclasspath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
<pathelement location="${build.dir}" />
<pathelement location="." />
</path>


No this line, the hibernate.cfg.xml cannot be found!
#beginner 发表于2004-07-29 01:27:00  IP: 218.94.83.*
I take the wrong method.

Since there is a path element for classeses, the hibernate.cfg.xml can be put there.
In this way, the build.xml is perfect!
#华dee 发表于2004-08-03 16:56:00  IP: 210.21.106.*
太好了,感谢搂住,小弟按你的方法执行了一遍,感觉不错,好好学习Hibernate,有前途啊!
#cowboy 发表于2004-09-08 18:59:00  IP: 218.90.166.*
恩,很容易上手,而且也能看得很清楚。
请问数据库的cid是根据id加的吗?他是怎么会自动加的?
#hubl 发表于2004-09-11 20:05:00  IP: 211.138.144.*
不错,
不过,如果hibernate.cfg.xml用中文注释,字符编码要用 encoding="gb2312"。
#reap 发表于2004-09-15 10:31:00  IP: 211.147.216.*
我的也是报跟楼上张老五兄弟一样的错,不知楼上张兄解决了吗,望告知小弟,我用的是ms sqlserver
#pingping 发表于2004-09-20 11:06:00  IP: 218.81.204.*
我出现了下面的错误,不知道是拿出了问题了,帮忙解决一下好吗?
C:\workspace\My1stHibernate>ant run
Buildfile: build.xml

init:

build:

run:
[java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.
cfg.Environment).
[java] log4j:WARN Please initialize the log4j system properly.
[java] net.sf.hibernate.HibernateException: problem parsing configuration/h
ibernate.cfg.xml
[java] at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.
java:958)
[java] at net.sf.hibernate.cfg.Configuration.configure(Configuration.ja
va:897)
[java] at net.sf.hibernate.cfg.Configuration.configure(Configuration.ja
va:883)
[java] at Test.main(Unknown Source)
[java] Caused by: org.dom4j.DocumentException: Invalid byte 2 of 2-byte UTF
-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence.
[java] at org.dom4j.io.SAXReader.read(SAXReader.java:358)
[java] at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.
java:953)
[java] ... 3 more



BUILD SUCCESSFUL
#pingping 发表于2004-09-21 09:17:00  IP: 218.81.204.*
如果数据库没有密码可以吗?
#pingping 发表于2004-09-21 10:01:00  IP: 218.81.204.*
我给数据库加了密码再连接,发现还是这样的错误亚
#Cannot open connection  发表于2004-09-20 17:17:00  IP: 61.52.202.*
是你的数据库联接错了!或者是hibernate.cfg.xml中 <property name="connection.username">
你的数据库用户名
</property>
<property name="connection.password">
你的数据库密码
</property>
不对!
#qq:41025576 发表于2004-10-20 09:47:00  IP: 202.114.165.*
C:\workspace\My1stHibernate>ant run
Buildfile: build.xml

init:

build:
[javac] Compiling 1 source file to C:\workspace\My1stHibernate\classes

run:
[java] java.lang.NoClassDefFoundError: Test (wrong name: My1stHibernate/src
/Test)
[java] at java.lang.ClassLoader.defineClass0(Native Method)
[java] at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
[java] at java.security.SecureClassLoader.defineClass(SecureClassLoader
.java:123)
[java] at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
[java] at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)

[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
[java] at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

[java] Exception in thread "main"

[java] Java Result: 1

BUILD SUCCESSFUL
Total time: 9 seconds


what's the matter of it?I do as you told
#haibo 发表于2004-10-29 11:43:00  IP: 218.18.28.*
我也成功了,联系qq1833740
#abcd 发表于2004-10-29 17:22:00  IP: 218.68.235.*
你太棒了.
我运行成功了.谢谢你!顺便问一下,hibernate.cfg.xml的名字可否为hibernate.xml,
#望断天涯 发表于2004-11-03 16:53:00  IP: 218.107.20.*
不错!不错! 我的msn是: miaoxuena_1@hotmail.com
有msn的朋友加我吧! 共同学习hibernate
#bb 发表于2004-11-29 22:24:00  IP: 202.103.6.*
[java] java.lang.ExceptionInInitializerError
[java] at Test.main(Unknown Source)
[java] Caused by: org.apache.commons.logging.LogConfigurationException: jav
ng.reflect.InvocationTargetException
[java] at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(Lo
toryImpl.java:532)
[java] at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(Lo
toryImpl.java:272)
[java] at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(Lo
toryImpl.java:246)
[java] at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:

[java] at net.sf.hibernate.cfg.Configuration.<clinit>(Configuration.jav
)
[java] ... 1 more
[java] Caused by: java.lang.reflect.InvocationTargetException
[java] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
hod)
[java] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeC
ructorAccessorImpl.java:39)
[java] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Del
ingConstructorAccessorImpl.java:27)
[java] at java.lang.reflect.Constructor.newInstance(Constructor.java:27

[java] at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(Lo
toryImpl.java:525)
[java] ... 5 more
[java] Caused by: java.lang.VerifyError: (class: org/apache/log4j/LogManage
ethod: <clinit> signature: ()V) Incompatible argument to function
#bb 发表于2004-11-29 22:25:00  IP: 202.103.6.*
有人能告诉我,错在哪里,或发个源码?谢谢!
yangbj@skyon.com.cn
#lzj 发表于2005-01-09 23:21:00  IP: 222.20.54.*
我的错误也是这样的,是怎么回事啊


init:

build:

run:
[java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.
cfg.Environment).
[java] log4j:WARN Please initialize the log4j system properly.
[java] net.sf.hibernate.HibernateException: problem parsing configuration/h
ibernate.cfg.xml
[java] at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.
java:958)
[java] at net.sf.hibernate.cfg.Configuration.configure(Configuration.ja
va:897)
[java] at net.sf.hibernate.cfg.Configuration.configure(Configuration.ja
va:883)
[java] at Test.main(Unknown Source)
[java] Caused by: org.dom4j.DocumentException: Invalid byte 2 of 2-byte UTF
-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence.
[java] at org.dom4j.io.SAXReader.read(SAXReader.java:358)
[java] at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.
java:953)
[java] ... 3 more

#yeibinlei 发表于2005-01-14 10:42:00  IP: 211.97.116.*
如何和tomcat整合一起使用啊?
#叶雨 发表于2005-02-03 16:35:00  IP: 218.63.193.*
我的也是上面的错,不知道怎么解决啊,楼上的兄弟们有没有解决了啊>??能不能说说是怎么样解决的啊!!
#叶雨 发表于2005-02-03 16:36:00  IP: 218.63.193.*
还有,楼主能不能也写一写在eclipse里怎么做啊??
#nake 发表于2005-03-07 21:16:00  IP: 211.96.23.*
张老五 的错误是你在hibernat.cfg.xml中
<property name="connection.url">
jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=gdkfzzz;SelectMethod=cursor
</property>
#wuhua 发表于2005-03-19 16:57:00  IP: 61.235.82.*
Buildfile: build.xml

init:

build:
[javac] Compiling 2 source files to C:\workspace\My1stHibernate\classes
[javac] C:\workspace\My1stHibernate\src\Test.java:1: package net.sf.hibernat
e does not exist
[javac] import net.sf.hibernate.*;
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:2: package net.sf.hibernat
e.cfg does not exist
[javac] import net.sf.hibernate.cfg.*;
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:9: cannot find symbol
[javac] symbol : class SessionFactory
[javac] location: class Test
[javac] SessionFactory sf =
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:10: cannot find symbol
[javac] symbol : class Configuration
[javac] location: class Test
[javac] new Configuration().configure().buildSessionFactory(
);
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:11: cannot find symbol
[javac] symbol : class Session
[javac] location: class Test
[javac] Session session = sf.openSession();
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:12: cannot find symbol
[javac] symbol : class Transaction
[javac] location: class Test
[javac] Transaction tx = session.beginTransaction();
#fly 发表于2005-04-20 17:39:00  IP: 218.2.240.*
有一点要请教一下, 在hibernate中要查出两张表的内容, 是不是在写映射文件时就要写好它的 关联参数? (比如 1:n or 1:1 or n:n)
#qq22913084 发表于2005-04-21 09:06:00  IP: 220.160.37.*
我用JBuider oracle但是还是出错了请楼主帮忙
log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).

log4j:WARN Please initialize the log4j system properly.

net.sf.hibernate.MappingException: Error reading resource: hibernate5/Customer.hbm.xml

at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:318)

at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:976)

at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:928)

at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:856)

at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:842)

at hibernate5.Test.addCustomer(Test.java:15)

at org.apache.jsp.add_jsp._jspService(add_jsp.java:66)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
#天外来客 发表于2005-04-25 20:56:00  IP: 61.152.134.*
把hibernate_cfg.xml内容改为下面方式:


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

<hibernate-configuration>

<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.pool.size">20</property>
<property name="hibernate.show_sql">true</property>
<property name="jdbc.fetch_size">50</property>
<property name="jdbc.batch_size">25</property>
<property name="jdbc.use_scrollable_resultset">false</property>
<property name="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<!-- Mapping files -->
<mapping resource="Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
#shandianly 发表于2005-05-01 22:15:00  IP: 219.157.143.*
log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).

log4j:WARN Please initialize the log4j system properly.

net.sf.hibernate.MappingException: Resource: h/Person.hbm.xml not found

at net.sf.hibernate.cfg.Configuration.addClass(Configuration.java:349)

at h.TestPerson.main(TestPerson.java:13)

Exception in thread "main"

这是个什么错误
#peter207 发表于2005-05-26 18:28:00  IP: 61.186.252.*
我的编译成功,就是书籍库没有数据
显示信息:
C:\workspace\My1stHibernate>ant
Buildfile: build.xml

init:

build:
[javac] Compiling 1 source file to C:\workspace\My1stHibernate\classes

BUILD SUCCESSFUL
Total time: 5 seconds
C:\workspace\My1stHibernate>ant
Buildfile: build.xml

init:
[mkdir] Created dir: C:\workspace\My1stHibernate\classes

build:
[javac] Compiling 2 source files to C:\workspace\My1stHibernate\classes
[copy] Copying 1 file to C:\workspace\My1stHibernate\classes

BUILD SUCCESSFUL
Total time: 5 seconds
#peter207 发表于2005-05-26 18:39:00  IP: 61.186.252.*
成功了,原来是 build.xml里将default="build" 改为default="run"
#hgf1011 发表于2005-05-28 12:57:00  IP: 61.186.252.*
我也成功了,楼上那些失败的朋友可能是因为,你从网页里面直接copy,里面有些其它字符
把这些个空格之类的去掉.就可以了
我一开始也是,不过现在已经成功了
#TJdream 发表于2005-08-01 15:03:00  IP: 61.186.252.*
这是俺报的错,怎么找不到 package net.sf.hibern这个包啊?这个包在哪里放着哩呀??哪位高手能帮俺看看啊?

C:\workspace\My1stHibernate>ant run
Buildfile: build.xml

init:

build:
[javac] Compiling 2 source files to C:\workspace\My1stHibernate\classes
[javac] C:\workspace\My1stHibernate\src\Test.java:1: package net.sf.hibern
e does not exist
[javac] import net.sf.hibernate.*;
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:2: package net.sf.hibern
e.cfg does not exist
[javac] import net.sf.hibernate.cfg.*;
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:8: cannot resolve symbol
[javac] symbol : class SessionFactory
[javac] location: class Test
[javac] SessionFactory sf = new Configuration().configure().buildSessionFa
ory();
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:8: cannot resolve symbol
[javac] symbol : class Configuration
[javac] location: class Test
[javac] SessionFactory sf = new Configuration().configure().buildSessionFa
ory();
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:9: cannot resolve symbol
[javac] symbol : class Session
[javac] location: class Test
[javac] Session session = sf.openSession();
[javac] ^
[javac] C:\workspace\My1stHibernate\src\Test.java:10: cannot resolve symbo
[javac] symbo
#jingchh 发表于2005-09-13 09:52:00  IP: 211.100.21.*
我也试过好多的例子,不知道是我机子配置的问题还是怎么回事,hibernate没有调通过。楼上那位仁兄能不能给发个可以运行hibernate让小弟学学。小弟干谢不尽 。msn:jingchh125@hotmail.com qq:249505130
#jqy 发表于2005-09-21 15:00:00  IP: 211.100.21.*
你的这个hibernate.cfg.xml文件放在那个目录下面的 为什么不说一下。
#yumen 发表于2006-02-17 13:46:00  IP: 218.59.27.*
在xp系统上安装sql jdbc 驱动应下载哪些安装文件,我依照上面的步骤测试也没通过,能帮忙解决一下吗?thank you very much
#dl2007 发表于2006-02-27 16:25:00  IP: 222.190.96.*
hibernate.cfg.xml文件放在src下面
#firefox 发表于2006-02-27 16:38:00  IP: 61.171.213.*
找不到 package net.sf.hibern这个包?报错7个
#puton 发表于2006-08-10 16:40:00  IP: 221.220.126.*
好文章!!!
#bruceon 发表于2006-08-10 17:13:00  IP: 58.67.228.*
ant run
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[java] org.hibernate.HibernateException: Could not parse configuration:/hibernate.cfg.xml
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
为什么阿?
#XXKKFF 发表于2006-12-30 13:25:08  IP: 172.18.32.*
好文章!!!

收藏!!!!
#XXKKFF 发表于2006-12-30 13:25:58  IP: 172.18.32.*
好文章!!!

收藏!!!!

然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。
================================
讲得太好了!!!!!!!!!!!!!!!!!!!!111
#KSlinfeng 发表于2007-11-07 14:16:12  IP: 222.221.240.*
不错,不错
#yuyunqing28 发表于2008-07-15 18:57:04  IP: 124.134.194.*
特别推荐:

尚学堂最新149班(2008年4月教学内容)王勇老师主讲的struts、hibernate下载

http://www.chubeibao.com/bbs/?fromuid=1179

传智播客JBPM工作流系统视频 课件
传智播客最新ajax视频(共计31课时)

http://www.chubeibao.com/bbs/?fromuser=yuyunqing28
#tds_lj 发表于2008-07-24 10:44:38  IP: 58.247.205.*
不错的东东
非常感谢
#Qunshower 发表于2008-08-26 00:45:04  IP: 116.24.64.*
我有一个JAVA_Web的群 29077372 ,大家加进来一起学习吧
#Qunshower 发表于2008-08-26 00:45:15  IP: 116.24.64.*
我有一个JAVA_Web的群 29077372 ,大家加进来一起学习吧
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © doodoofish