一、Hibernate概述
(一)什么是Hibernate?
hibernate核心内容是ORM(关系对象模型)。可以将对象自动的生成数据库中的信息,使得开发更加的面向对象。这样作为程序员就可以使用面向对象的思想来操作数据库,而不用关心繁琐的JDBC。所以,hibernate处于三层架构中的D层(持久层)。
(二)使用Hibernate的优点
1、Hibernate可以使用在Java的任何项目中,不一定非要使用在Javaweb项目中。因为Hibernate不需要类似于tomact这些容器的支持,可以直接通过一个main方法进行测试。
2、通过下面的实例,可以发现使用Hibernate可以大大减少代码量。
3、由于使用了Hibernate,代码中不涉及具体的JDBC语句,所以就方便了代码的可移植性。
二、Hibernate开发的环境搭建
(一)Hibernate的环境搭建非常简单,只需要引入Hibernate核心包(单击下载)以及Hibernate依赖包(单击下载)即可。
(二)加入数据库驱动。下面的例子中主要是采用Mysql数据库来演示的,所以在这里引入MysqL的JDBC驱动(点击下载)。
(三)提供核心配置文件hibernate.cfg.xml文件(在src文件夹下即可)。其中的配置如下(针对mysql)
[html]view plaincopy
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernate_first
root
root
org.hibernate.dialect.MySQLDialect
三、HIbernate第一个实例
该实例的目录结构如下
说明:最后一个HIBERNATE3里面包含了所有的需要引用的jar包
1、新建一个普通的java项目,按照上面的步骤引入相关的jar包和配置文件
2、建立User实体类
[java]view plaincopy
importjava.util.Date;
publicclassUser {
privateString id;
privateString username;
privateString password;
privateDate createTime;
privateDate expireTime;
publicString getId() {
returnid;
}
publicvoidsetId(String id) {
this.id = id;
}
publicString getUsername() {
returnusername;
}
publicvoidsetUsername(String userName) {
this.username = userName;
}
publicString getPassword() {
returnpassword;
}
publicvoidsetPassword(String password) {
this.password = password;
}
publicDate getCreateTime() {
returncreateTime;
}
publicvoidsetCreateTime(Date createTime) {
this.createTime = createTime;
}
publicDate getExpireTime() {
returnexpireTime;
}
publicvoidsetExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
}
2、提供User.hbm.xml文件,完成实体类的映射
[html]view plaincopy
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
其中的property标签是将要生成是数据库表中的字段,在这里不用关心各个字段是什么类型的。因为Hibernate会根据上面的实体类中属性的类型来决定将来表中字段的类型
3、配置hibernate.cfg.xml文件
[html]view plaincopy
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernate_first
root
root
org.hibernate.dialect.MySQLDialect
注意:必须是“/”而不能是“.”。
4、生成表:编写工具类ExoprtDB.java,将hbm生成ddl
[java]view plaincopy
importorg.hibernate.cfg.Configuration;
importorg.hibernate.tool.hbm2ddl.SchemaExport;
/**
* 将hbm生成ddl
* @author BCH
*
*/
publicclassExoprtDB {
publicstaticvoidmain(String[] args) {
//默认读取hibernate.cfg.xml文件
Configuration cfr =newConfiguration().configure();
SchemaExport export =newSchemaExport(cfr);
export.create(true,true);
}
}
到这里就可以生成User表了,但是如果直接运行ExoprtDB.java文件是不能生成User表的。因为在mysql数据中还没有建立数据库Hibernate-first。所以在mysql控制台中通过create database hibernate-first; use hibernate-first;之后再执行ExoprtDB.java文件就可以生成表了。
5、向表中添加数据
[java]view plaincopy
importjava.util.Date;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.Configuration;
publicclassClient {
publicstaticvoidmain(String[] args) {
//读取配置文件
Configuration cfg =newConfiguration().configure();
SessionFactory factory = cfg.buildSessionFactory();
Session session =null;
try{
session = factory.openSession();
//开启事务
session.beginTransaction();
User user =newUser();
user.setUsername("用户名");
user.setPassword("123");
user.setCreateTime(newDate());
user.setExpireTime(newDate());
session.save(user);
//提交事务
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
//回滚事务
session.getTransaction().rollback();
}finally{
if(session !=null){
if(session.isOpen()){
//关闭session
session.close();
}
执行该java文件就可以完成向表中增加数据了,效果如下
(四)总结
通过上面的代码我们可以看出,在代码中没有涉及到任何有关JDBC的代码,作为开发人员只需要写好相应的实体类,然后通过配置就可以实现了表的建立以及向表中实现数据的插入。
在代码中有许多Hibernate的核心对象,例如Configuration、SessionFactory、Session等等。这些内容将在以后介绍.
更多详细源码参考来源:http://minglisoft.cn/technology欢迎大家一起学习研究相关技术,源码获取请加求求(企鹅):2042849237