学无止境
BlogJava
首页
新文章
新随笔
聚合
管理
posts - 37, comments - 9, trackbacks - 0
Hibernate笔记系列01——搭建Hibernate开发环境以及第一个Hibernate项目(根据传智播客相关视频整理)
使用的是Hibernate3.2.x版本。数据库采用的是MySQL5.1。实现保存用户的功能。由于主要是搭建开发环境以及写第一个测试的小应用,因此里面的代码只是简单的实现功能。
1.下载Hibernate3.2。
www.hibernate.org
现在可能很难找到该版本,所以可以在百度搜索一下。下载后将压缩文件解压到本地硬盘,例如,我解压到F:\hibernate-3.2目录。
2.安装MySQL数据库,创建一个叫hibernatefirst的数据库,然后use该数据库(关于MySQL安装以及MySQL如何创建数据库等这里就不详细说了。)
3.在MyEclipse中新建一个Java项目(不用是Web项目,Java项目即可),取名为hibernate。在项目下新建一个Folder,取名为lib,将hibernate解压路径下的hibernate3.jar文件,以及hibernate解压路径下的lib目录下的所有jar文件一并拷贝到该lib目录下。此外,hibernate作为一个持久层框架,其底层使用的依然是JDBC,因此,需要将MySQL的JDBC驱动加入该lib目录下。这样hibernate需要的jar文件就齐了。但是这些jar文件并没有加入该项目的classpath中,因此是无法在项目中引用的。因此,选中项目下lib目录下的所有jar文件,右键—>buildpath—>Add to Buildpath。
4.环境已经搭建好了,开始第一个简单的hibernate项目吧。在src目录下新建包:com.xiaobai.hibernate.domain,在其下创建类User,代码如下:
1
package
com.xiaobai.hibernate.domain;
2
3
import
java.util.Date;
4
5
public
class
User
{
6
7
private
int
id;
8
private
String name;
9
private
Date birthday;
10
public
int
getId()
{
11
return
id;
12
}
13
public
void
setId(
int
id)
{
14
this
.id
=
id;
15
}
16
public
String getName()
{
17
return
name;
18
}
19
public
void
setName(String name)
{
20
this
.name
=
name;
21
}
22
public
Date getBirthday()
{
23
return
birthday;
24
}
25
public
void
setBirthday(Date birthday)
{
26
this
.birthday
=
birthday;
27
}
28
}
29
5.为User类编写映射文件User.hbm.xml。在com.xiaobai.hibetnate.domain包下创建该文件,作为新手肯定不知道该文件中到底应该写点什么,没关系,hibernate为我们提供的示例中有,copy过来再进行修改就好。到hibernate解压路径下的eg\org\hibernate\auction路径下,拷贝一个User.hbm.xml文件过来,将<hibernate-mapping>标签内的内容全部删除,将<hibernate-mapping>标签的package改成User类所在的包,也就是该映射文件所在的包。然后在<hibernate-mapping>标签对中添加如下内容:
1
<
class
name
="User"
>
2
<
id
name
="id"
>
3
<
generator
class
="native"
/>
4
</
id
>
5
<
property
name
="name"
/>
6
<
property
name
="birthday"
/>
7
</
class
>
差点忘了说明,映射文件的命名是XXX.hbm.xml,其中的XXX是你所要映射的domain对象的名称,例如这里是User。
6.编写hibernate配置文件hibernate.cfg.xml。到hibernate解压路径下的etc目录下拷贝一份到src目录下,注意不在包下,而是在src目录下。将以下代码覆盖copy过来的版本:
1
<!
DOCTYPE hibernate-configuration PUBLIC
2
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
3
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
4
5
<
hibernate-configuration
>
6
<
session-factory
>
7
<
property
name
="hibernate.connection.driver_class"
>
com.mysql.jdbc.Driver
</
property
>
8
<
property
name
="hibernate.connection.url"
>
jdbc:mysql:///hibernate
</
property
>
9
<
property
name
="hibernate.connection.username"
>
root
</
property
>
10
<
property
name
="hibernate.connection.password"
>******
</
property
>
11
<
property
name
="hibernate.dialect"
>
org.hibernate.dialect.MySQLDialect
</
property
>
12
<
property
name
="hibernate.hbm2ddl.auto"
>
create
</
property
>
13
14
<
property
name
="show_sql"
>
true
</
property
>
15
<
mapping
resource
="com/xiaobai/hibernate/domain/User.hbm.xml"
/>
16
</
session-factory
>
17
</
hibernate-configuration
>
前面数过,hibernate底层也是通过JDBC实现的,因此也需要提供连接数据库的信息,所以前面四条属性就不难理解了。由于hibernate能支持很多关系型数据库,那么生成sql语句时,会根据数据库不同而作一定的调整,所以,需要配置数据库方言的信息,这就是第五条所配置的。默认情况下,我们只创建了数据库,数据库中并没有User对应的表,因此,保存User对象前需要先创建表,那么第六条配置的就是这个内容。另外,第七条配置让hibernate在打印生成的sql语句。最后,不要忘了将映射文件以资源的形式加入配置文件,这就是<mapping>标签中配置的内容。这么多的属性name是不用记住的,进入hibernate解压路径,etc目录下有一个hibernate.properties文件,里面包含了所有的属性的示例。在配置的时候照猫画虎拷贝需要的过来进行修改即可。
7.配置搞定,下面编写一个测试类,代码如下:
1
package
com.xiaobai.hibernate;
2
3
import
java.util.Date;
4
5
import
org.hibernate.Session;
6
import
org.hibernate.SessionFactory;
7
import
org.hibernate.Transaction;
8
import
org.hibernate.cfg.Configuration;
9
10
import
com.xiaobai.hibernate.domain.User;
11
12
public
class
Base
{
13
public
static
void
main(String[] args)
{
14
Configuration cfg
=
new
Configuration().configure();
15
16
SessionFactory factory
=
cfg.buildSessionFactory();
17
18
Session session
=
factory.openSession();
19
20
Transaction tx
=
session.beginTransaction();
21
22
User user
=
new
User();
23
user.setName(
"
张三
"
);
24
user.setBirthday(
new
Date());
25
26
session.save(user);
27
tx.commit();
28
29
session.close();
30
factory.close();
31
32
33
}
34
}
35
这段代码仅仅是为了实现功能,实际上是很不完善的,后面的文章会讨论如何写完善的合理的代码。运行该类。进入数据库,发现数据库中多了一张user表,查看里面的数据,已经添加了一条name为“张三”的数据。OK,第一个hibernate小示例完成了。
posted on 2010-08-28 18:56
wawlian
阅读(1289)
评论(0)
编辑
收藏
所属分类:
Hibernate
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
<
2010年8月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Ajax(2)
Android
ArcGIS Desktop
ArcGIS Engine
ArcGIS Server
CentOS
CSS(1)
CVS Eclipse(1)
Dorado
Flex(3)
GIS概念(1)
Hibernate(1)
Java(3)
JavaScript(1)
jBPM
JDBC(1)
jQuery(3)
Servlet JSP(2)
Struts2(5)
云计算(1)
数据库
杂(10)
算法导论(1)
随笔档案
2011年10月 (2)
2011年6月 (4)
2011年5月 (1)
2011年4月 (5)
2011年3月 (4)
2011年2月 (1)
2011年1月 (4)
2010年12月 (2)
2010年9月 (3)
2010年8月 (9)
搜索
最新评论
1. re: 为何无法访问微软网站--解决方案(转)
nice work,thx
--y.x.
2. re: 为何无法访问微软网站--解决方案(转)[未登录]
为什么可以呢?有什么影响吗?
--虎子
3. re: Windows 7 SP1无法安装oracle10g 11g的解决办法(转)
楼主说得真好,顶!
--catalpapril
4. re: PowerDesigner的一些常用设置及技巧(转帖)
mark
--asdf
5. re: 使用jQuery判断获取到的页面元素是否为空
帅哥,那个if ($("#tt").lenght > 0) 。。。。
这里貌似写错了
--yyq745201
阅读排行榜
1. PowerDesigner的一些常用设置及技巧(转帖)(9141)
2. 使用jQuery判断获取到的页面元素是否为空(7637)
3. Flex4 滚动条沉底[转](2610)
4. PowerDesigner中如何添加约束(1675)
5. 为何无法访问微软网站--解决方案(转)(1289)
评论排行榜
1. 为何无法访问微软网站--解决方案(转)(4)
2. Struts2对Action名称的搜索顺序(2)
3. PowerDesigner的一些常用设置及技巧(转帖)(1)
4. Windows 7 SP1无法安装oracle10g 11g的解决办法(转)(1)
5. 使用jQuery判断获取到的页面元素是否为空(1)