您的位置:首页 > 其它

hibernate入门的第一个例子

2012-07-13 21:11 375 查看
1、关于Hibernate
Hibernate:将对关系数据库的操作转换为面向对象的ORM框架。
ORM技术就是关系数据库的操作和面向对象操作相互转换的一种技术。

2、创建一个Hibernate的Java应用实例步骤:(有以下6个步骤)

(1)加载hibernate.jar包以及lib中为hibernate提供支持的jar包

(2)加载JDBC驱动包

(3)创建User类,包括三个属性:id(唯一标识),name(姓名),birthday(日期)

(4)为User类配置映射文件

(5)配置Hibernate的默认配置文件hibernate.cfg.xml

(6)编写主程序代码进行验证。

3、下面对上面的每一个步骤进行详细说明:

准备工作:在MySQL下创建数据库,数据库名为:bookdb. 即在MySQL命令行窗口中输入命令:

create database bookdb;

即可创建数据库bookdb。

(1) 加载hibernate.jar包以及lib中为hibernate提供支持的jar包。

做这一步的准备工作:百度下载hibernate3.2.0. 下载下来的文件夹hibernate3.2.0有文档:doc、配置文件:etc、例子程序:eg、jar包目录:lib等文件夹,还有hibernate3.jar驱动包,这个驱动包比较重要。

即在MyEclipse下新建java project,例如:工程名为hibernate。选中工程名,点击鼠标右键-->选择Properties-->选择Java Build Path-->Libraries-->Add External JARs导入文件夹hibernate3.2.0下lib下的所有jar包,然后-->Add External JARs-->导入文件夹hibernate3.2.0下的hibernate3.jar。

(2)加载JDBC驱动包

即下载连接MySQL的驱动jar包:mysql-connector-java-5.1.10-bin.jar。这里我的MySQL版本是5.1.55. MySQL驱动jar包和MySQL版本号前两个数字对应即可。 注:如何查看MySQL的版本?答:打开MySQL Command Line Client-->输入:select version();即可。

(3)创建User类,包括三个属性:id(唯一标识),name(姓名),birthday(日期)

即在源程序src下创建User类,包名为:com.hibernate.domain。以下为User类的源程序:

package com.hibernate.domain;

import java.util.Date;

public class User {
private int id;
private String name;
private Date birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}

(4)为User类配置映射文件

以下为User.hbm.xml映射文件的xml代码:(注:User.hbm.xml文件也放在包com.hibernate.domain中)

<?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.hibernate.domain">

<class name="User">

<id name="id">
<generator class="native"/>
</id>

<property name="name"/>

<property name="birthday"/>

</class>

</hibernate-mapping>

注:标签hibernate-mapping的package属性指明User类所在的包名。 标签class的属性name为User的类名。 id唯一、自动增1,有两个属性,name为数据库中的字段名,分别为name和birthday。

(5)配置Hibernate的默认配置文件hibernate.cfg.xml

以下为hibernate.cfg.xml的xml代码,可参考目录hibernate-3.2\etc下的hibernate.properties配置文件:(注hibernate.cfg.xml文件存放在源程序src文件下)

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>

<!-- 驱动连接字符串 -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>

<!-- 连接数据库的URL -->
<!--property name="connection.url">
jdbc:mysql://localhost:3306/bookdb
</property-->
<!-- 以下省略localhost、端口号和上面的效果一样 -->
<property name="connection.url">
jdbc:mysql:///bookdb
</property>

<!-- 连接数据库的用户名 -->
<property name="connection.username">
root
</property>
<!-- 连接数据库的密码 -->
<property name="connection.password">
123
</property>

<!-- 指定数据库方言 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>

<!-- 控制台显示SQL语句 -->
<property name="show_sql">
true
</property>

<!-- 根据需要自动创建数据表 -->
<!-- 不新建表也不删除表,只更新表中的数据 ,如下:-->
<property name="hbm2ddl.auto">update</property>
<!-- 在应用运行以前创建一张表,在应用运行之后把表删除,推荐在测试中使用,如下: -->
<!--property name="hbm2ddl.auto">create-drop</property-->
<!-- 在应用运行以前创建一张表,但是在应用运行之后不会把表删除,推荐在测试中使用 ,如下 -->
<!--property name="hbm2ddl.auto">create</property-->

<!-- 罗列所有的映射文件 -->
<mapping resource="com/hibernate/domain/User.hbm.xml"/>

</session-factory>
</hibernate-configuration>


(6)编写主程序代码进行验证。

在源程序src下新建Base类,包名为:com.hibernate。主程序Base类的代码如下所示:

package com.hibernate;

import java.util.Date;

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

import com.hibernate.domain.User;

public class Base {

/**
* @param args
*/
public static void main(String[] args) {
//初始化,目的是为了获得SesionFactory对象
Configuration c=new Configuration();
c.configure();

//用SesionFactory工厂生产session,而且SesionFactory对应jdbc连接数据库时的DriverManager
//session对应jdbc连接数据库时的Connection
SessionFactory sf=c.buildSessionFactory();
Session s=sf.openSession();

//hibernate需要手动提交事务
Transaction t=s.beginTransaction();
User u=new User();
u.setName("fangjing");
u.setBirthday(new Date());
//保存User对象
s.save(u);
t.commit();
//关闭session,在事务提交后关闭session
s.close();

System.out.println("end");
}

}

4、运行Base类,点击运行。

Console控制台显示以下信息:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate: insert into User (name, birthday) values (?, ?)
end

说明hibernate成功连接MySQL。

然后打开MySQL的命令行窗口输入:

use bookdb;

select * from user;


输出信息:

id name birthday

1 fangjing 2012-07-13 21:14:30

注:birthday为当前日期。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: