新手上路之Hibernate:第一个Hibernate例子

一、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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Hibernate概述 (一)什么是Hibernate? hibernate核心内容是ORM(关系对象模型)。...
    ITsupuerlady阅读 637评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • Hibernate: 一个持久化框架 一个ORM框架 加载:根据特定的OID,把一个对象从数据库加载到内存中OID...
    JHMichael阅读 2,016评论 0 27
  • 可能最近瘦的太快了,好多人问我怎么瘦的,就不一一作答啦,分享一下吧,以后在问红包先来。其实分享是个好东西,不只总结...
    接近鬼的哭泣阅读 707评论 0 0
  • 诗/灵书 长安月下红袖香 唐时红袖亦芬芳,岂独谪仙羁狂放。 绝代风华千秋写,淡妆浓抹粉诗香。 武则天 一舞剑器动四...
    逸云凝香阅读 473评论 2 6