SSH(Struts+Spring+Hibernate)是目前十分流行的搭配组合框架,接下来的日子里我会再次写上自己学习Hibernate的过程,与大家共勉。今天开第一章节,进行八个步骤运行一个Hibernate的小案例。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
下面是运行Hibernate的八个步骤:
1、运行环境:eclipse,mysql数据库,Hibernate运行的jar包:hibernate.jar、dom4j.jar、javassist.jar、log4j.jar、slf4j.jar、slf4j-log4j.jar、commons-collections.jar、antlr.jar,mysql数据库驱动文件mysql-connector-java-5.1.17-bin.jar。
2、建立一个web应用程序取名为hibernate,在lib目录下导入那几个jar包。
3、创建数据库xiaomo,并创建表User,字段id(主键,自增长),name,age。
4、在src目录下建立package com.xiaomo.vo,在其下建立User类:
package com.xiaomo.vo;
public class User {
private int id;// 用户id
private String name;// 用户名称
private int age;// 用户年龄
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
。。。get,set方法。。。
}
5、在与User.java类同目录建立一个User.hbm.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 用class元素来定义一个持久化类 -->
<class name="com.xiaomo.vo.User" table="user">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name" column="name"></property>
<property name="age" column="age"></property>
</class>
</hibernate-mapping>
6、在src目录下创建hibernate配置文件hibernate.cfg.xml:
<!--表明解析本XML文件的DTD文档位置,DTD是Document Type Definition 的缩写,即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性。hibernate.sourceforge.net/hibernate-configuration-3.0dtd可以在 Hibernate3.2.5软件包中的src\org\hibernate目录中找到此文件-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!--声明Hibernate配置文件的开始-->
<hibernate-configuration>
<!-- 表明以下的配置是针对session-factory配置的,sessionFactory是hibernate中的一个类,这个类主要负责
保存hibernate的配置信息,以及对session的操作 -->
<session-factory>
<!-- 配置数据库的驱动程序,hibernate在连接数据库时,需要用到数据库的驱动程序 -->
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- 设置数据库的连接url:jdbc:mysql://localhost:3306/xiaomo,其中localhost表示说mysql的服务器名称,此处为本机。
port代表mysql服务器的端口号,默认为3306.xiaomo是数据库名,这是你要连接的数据库名 -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/xiaomo
</property>
<!-- 如果你的mysql服务器都是默认设置的,且装在本机上则也可以写成
jdbc:mysql://localhost/xiaomo
或者是
jdbc:mysql:///test
-->
<!-- 连接数据库的用户名 -->
<property name="hibernate.connection.username">
root
</property>
<!-- 连接数据库的密码 -->
<property name="hibernate.connection.password">
cd_hisome
</property>
<!-- Hibernate使用的数据库方言,就是要用hibernate连接哪种类型的数据库服务器 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- hibernate.hbn2ddl.auto指定由java代码生成数据库脚本,进而生成具体的表结构的具体方式 -->
<property name="hbn2ddl.auto">update</property>
<!-- 是否在后台显示Hibernate生成的查询数据库的SQL语句,开发时设置为true,便于查询错误,运行时
可以在Eclipse的控制台显示Hibernate执行的sql语句。项目部署后可以设置为false,提高运行效率 -->
<property name="show_sql">true</property>
<!-- 指定映射文件为“com/xiaomo/vo/User.hbm.xml” -->
<mapping resource="com/xiaomo/vo/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
7、建立一个测试类,测试hibernate:
package com.xiaomo.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.xiaomo.vo.User;
public class UserTest {
public static void main(String[] args) {
Configuration cfg = new Configuration().configure();
//configure()方法指定配置文件名为hibernate.cfg.xml,若不调用该方法,而是直接调用构造方法,默认配置文件类型为propertity,文件hibernate.properties
// 如果hibernate.cfg.xml中没有配置的某些属性,你可以通过config.setProperty(propertyName, value);来配置.
//如config.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User("xiaomo", 22);
session.save(user);
tx.commit();
System.out.println(user.getId());
session.clear();
User users = (User)session.get(User.class,user.getId());
System.out.println(users.getId());
session.close();
}
}
8、运行UserTest类,可以看到一下结果:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Hibernate: insert into user (name, age) values (?, ?)
7
Hibernate: select user0_.id as id0_0_, user0_.name as name0_0_, user0_.age as age0_0_ from user user0_ where user0_.id=?
7
数据库数据,已插入成功:
出处:http://blog.csdn.net/cl05300629/article/details/16826511 作者:伫望碧落