hibernate入门的第一个例子

来源:互联网 发布:网络爬虫书籍推荐 编辑:程序博客网 时间:2024/04/30 14:20

1、关于Hibernate

     Hibernate:将对关系数据库的操作转换为面向对象的ORM框架。

     ORM技术就是关系数据库的操作和面向对象操作相互转换的一种技术。

 

2、创建一个HibernateJava应用实例步骤:(有以下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连接数据库时的ConnectionSessionFactory 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,在事务提交后关闭sessions.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为当前日期。

 


 

 

 

原创粉丝点击