- 论坛徽章:
- 0
|
我以前用C,写了两年多的C,发现去外面面试都在考OO,不得不补一下,如果发现Hibernate这个好东东。
《深入浅出hibernate》是个好东东,不过作者好像也不是怎么照顾初学者,像我这样JAVA不是很熟悉的(虽然写C已经很久了),花费了很多的功夫才完成了第一个例子,真是惭愧,不过写些补遗的地方,希望和我一样水平的朋友少走些弯路。
1 准备工作
下载地址:
http://sourceforge.net/project/showfiles.php?group_id=40712
建议下载和书本上一致的版本:hibernate-2.1.7 hibernate-extensions-2.1.3 middlegen-Hibernate-r5
1) 创建示例数据库
drop database sample;
create database sample;
use sample;
drop table if exists t_user;
create table t_user(
id int(8) not null auto_increment,
name varchar(100) not null default '',
primary key (id)
)type=MyISAM;
我在mysql query browser执行居然有问题,不过在命令行里就没有什么问题了。
2) 构建Hibernate基础代码
建议刚学习编程的朋友先自己写一下代码,而已经有基础的朋友用下一步的自动生成。
使用Eclipse3.1以上的,还必须加private static final long serialVersionUID = 1L;右键警告处,有一个quick fit可以自动添加
解释详见
http://blog.iyi.cn/rimen/2006/03/serialversionuid_1.html
3) 由数据库产生基础代码
(1)首先配置MiddleGen所需要的目标数据库参数
后面是连接库的jar名,把下载的jar的名字改上去。现在已经没有 mysql-connector-java-3.0.0-beta-bin.jar这个下了,好像。
(2)修改MiddleGen的build.xml构建文件
这里有一个地方有毛病,修改value="$(build.dr)/gen-src"为value="../../src"和后面的package="org.redsaga.quickstart",因为在后面生成代码后,org.redsaga.quickstart.Tuser类会在HibernateSample/src/org/redsaga/quickstart下,而代码Tuser.java中的package "org.redsaga.quickstart"是不一致的
会有错误,我不知道为什么在作者那里会是src/目录下的包com.redsaga.quickstart而我这里必须设置为src.com.redsaga.quickstart。可能的话,希望各位大大能把这个给我们小鸟儿们说明一下如何设置。
以及package="org.redsaga.quickstart"本身和后面的代码有茅盾,因为后面是package="com.redsaga.quickstart",是com.而不是org。
建议改成com
2 hibernate配置
hibernate.cfg.xml配置有一个地方要注意:
net.sf.hibernate.dialect.MySQLDialect
如果没有写上,会引发数据库不支持identify的提示,不要去改那里,把这个加上就可以了。
3 日志配置
hibernate.cfg.xml 和 log4j.properties要放在HibernateSample目录下,要放在src下可能要修改什么设置,这个上面src.com.redsaga.quickstart的问题应该是一样的。
4 第一段代码
如果上面是手写的Tuser.java是没有问题的
但如果是自动生成的Tuser.java,那为有一个问题,那就是引用了org.apache.commons.lang.builder.ToStringBuilder类
所以要添加jar:commons-lang-1.0.1.jar,这个在hibernate-2.1.7的/lib下就有,不用自己去下载
事实上,要正确运行HibernateTest.java要添加如下的jar:
hibernate2.jar
mysql-connector-java-3.0.0-beta-bin.jar
hibernate/lib
cglib-full-2.0.2.jar
dom4j-1.4.jar
odmg-3.0.jar
commons-collectioins-2.1.1.jar
commons-lang-1.0.1.jar
commons-logging-1.0.4.jar
jta.jar
下面是用最新的hibernate3.jar和mysql-connector-java-5.0.3-bin.jar来完成的
1 建立一个文件夹tools
把MiddleGen放入tools下
只取如下几个子目录:
config
lib
middlegen-lib
和
build.xml
运行成功后会自动生成
build
src
不拷mysql-connector-java-5.0.3-bin.jar
而在修改mysql.xml的时候写入真正的路径
修改mysql.xml
修改build.xml
]>
这里我不修改package,我认为这个地方还可以考虑修改得好一些
运行成功
生成成功
加入 hibernate3和extensions
2 建立文件夹etc
把middlegen下的config/database考到下面
3 生成代码
这个hbm2java只有用hibernate2,用3会出很多的问题
把2的hibernate2.jar和lib都放到hibernate下
运行,成功
但是有这个
import org.apache.commons.lang.builder.ToStringBuilder;
找不到
把commons-lang-1.0.1.jar拷到/lib下
加入到libraries
还要加入libraries的:
dom4j-1.6.1.jar
commons-logging-1.0.4.jar
严重: Error parsing XML: /hibernate.cfg.xml(1) A pseudo attribute name is expected.
java.lang.NullPointerException
java.lang.NoClassDefFoundError: org/objectweb/asm/Type
添加如下jar
antlr-2.7.6.jar
asm.jar
cglib-2.1.3.jar
dom4j-1.4.jar
odmg-3.0.jar
commons-collectioins-2.1.1.jar
commons-lang-1.0.1.jar
commons-logging-1.0.4.jar
jta.jar
成功
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11860/showart_247955.html |
|