文档章节

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

 惜0623
发布于 2017/05/02 14:51
字数 2388
阅读 5
收藏 0

一、Hibernate概述

(一)什么是Hibernate?

           hibernate核心内容是ORM(关系对象模型)。可以将对象自动的生成数据库中的信息,使得开发更加的面向对象。这样作为程序员就可以使用面向对象的思想来操作数据库,而不用关心繁琐的JDBC。所以,Hibernate处于三层架构中的D层(持久层)。

(二)使用Hibernate的优点

1、Hibernate可以使用在Java的任何项目中,不一定非要使用在Java web项目中。因为Hibernate不需要类似于tomact这些容器的支持,可以直接通过一个main方法进行测试

2、通过下面的实例,可以发现使用Hibernate可以大大减少代码量。

3、由于使用了Hibernate,代码中不涉及具体的JDBC语句,所以就方便了代码的可移植性。

二、Hibernate开发的环境搭建

(一)Hibernate的环境搭建非常简单,只需要引入Hibernate核心包(单击下载)以及Hibernate依赖包(单击下载)即可。

(二)加入数据库驱动。下面的例子中主要是采用Mysql数据库来演示的,所以在这里引入MysqL的JDBC驱动(点击下载)。

(三)提供核心配置文件hibernate.cfg.xml文件(在src文件夹下即可)。其中的配置如下(针对mysql)

 

  1. <!DOCTYPE hibernate-configuration PUBLIC  
  2.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  3.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  4.   
  5. <hibernate-configuration>  
  6.     <session-factory >  
  7.         <!-- mysql数据库驱动 -->  
  8.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
  9.         <!-- mysql数据库名称 -->  
  10.         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>  
  11.         <!-- 数据库的登陆用户名 -->  
  12.         <property name="hibernate.connection.username">root</property>  
  13.         <!-- 数据库的登陆密码 -->  
  14.         <property name="hibernate.connection.password">root</property>  
  15.         <!-- 方言:为每一种数据库提供适配器,方便转换 -->  
  16.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  17.           
  18.     </session-factory>  
  19. </hibernate-configuration>  

 

三、HIbernate第一个实例

该实例的目录结构如下

说明:最后一个HIBERNATE3里面包含了所有的需要引用的jar包

 

1、新建一个普通的java项目,按照上面的步骤引入相关的jar包和配置文件

 

2、建立User实体类

一、Hibernate概述

(一)什么是Hibernate?

           hibernate核心内容是ORM(关系对象模型)。可以将对象自动的生成数据库中的信息,使得开发更加的面向对象。这样作为程序员就可以使用面向对象的思想来操作数据库,而不用关心繁琐的JDBC。所以,Hibernate处于三层架构中的D层(持久层)。

(二)使用Hibernate的优点

1、Hibernate可以使用在Java的任何项目中,不一定非要使用在Java web项目中。因为Hibernate不需要类似于tomact这些容器的支持,可以直接通过一个main方法进行测试

2、通过下面的实例,可以发现使用Hibernate可以大大减少代码量。

3、由于使用了Hibernate,代码中不涉及具体的JDBC语句,所以就方便了代码的可移植性。

二、Hibernate开发的环境搭建

(一)Hibernate的环境搭建非常简单,只需要引入Hibernate核心包(单击下载)以及Hibernate依赖包(单击下载)即可。

(二)加入数据库驱动。下面的例子中主要是采用Mysql数据库来演示的,所以在这里引入MysqL的JDBC驱动(点击下载)。

(三)提供核心配置文件hibernate.cfg.xml文件(在src文件夹下即可)。其中的配置如下(针对mysql)

  1. <!DOCTYPE hibernate-configuration PUBLIC  
  2.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  3.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  4.   
  5. <hibernate-configuration>  
  6.     <session-factory >  
  7.         <!-- mysql数据库驱动 -->  
  8.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
  9.         <!-- mysql数据库名称 -->  
  10.         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>  
  11.         <!-- 数据库的登陆用户名 -->  
  12.         <property name="hibernate.connection.username">root</property>  
  13.         <!-- 数据库的登陆密码 -->  
  14.         <property name="hibernate.connection.password">root</property>  
  15.         <!-- 方言:为每一种数据库提供适配器,方便转换 -->  
  16.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  17.           
  18.     </session-factory>  
  19. </hibernate-configuration>  

 

三、HIbernate第一个实例

该实例的目录结构如下

说明:最后一个HIBERNATE3里面包含了所有的需要引用的jar包

 

1、新建一个普通的java项目,按照上面的步骤引入相关的jar包和配置文件

 

2、建立User实体类

  1. import java.util.Date;  
  2.   
  3. public class User {  
  4.     private String id;  
  5.     private String username;  
  6.     private String password;  
  7.     private Date createTime;  
  8.     private Date expireTime;  
  9.       
  10.     public String getId() {  
  11.         return id;  
  12.     }  
  13.     public void setId(String id) {  
  14.         this.id = id;  
  15.     }  
  16.     public String getUsername() {  
  17.         return username;  
  18.     }  
  19.     public void setUsername(String userName) {  
  20.         this.username = userName;  
  21.     }  
  22.     public String getPassword() {  
  23.         return password;  
  24.     }  
  25.     public void setPassword(String password) {  
  26.         this.password = password;  
  27.     }  
  28.     public Date getCreateTime() {  
  29.         return createTime;  
  30.     }  
  31.     public void setCreateTime(Date createTime) {  
  32.         this.createTime = createTime;  
  33.     }  
  34.     public Date getExpireTime() {  
  35.         return expireTime;  
  36.     }  
  37.     public void setExpireTime(Date expireTime) {  
  38.         this.expireTime = expireTime;  
  39.     }  
  40. }  

 

2、提供User.hbm.xml文件,完成实体类的映射

 

  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5.       
  6. <hibernate-mapping>  
  7.     <class name="com.example.hibernate.User">  
  8.         <id name="id">  
  9.             <generator class="uuid"/>  
  10.         </id>  
  11.         <property name="username"/>  
  12.         <property name="password"/>  
  13.         <property name="createTime"/>  
  14.         <property name="expireTime"/>  
  15.     </class>  
  16. </hibernate-mapping>  

其中的property标签是将要生成是数据库表中的字段,在这里不用关心各个字段是什么类型的。因为Hibernate会根据上面的实体类中属性的类型来决定将来表中字段的类型

 

3、配置hibernate.cfg.xml文件

 

  1. <hibernate-configuration>  
  2.     <session-factory >  
  3.         <!-- mysql数据库驱动 -->  
  4.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
  5.         <!-- mysql数据库名称 -->  
  6.         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>  
  7.         <!-- 数据库的登陆用户名 -->  
  8.         <property name="hibernate.connection.username">root</property>  
  9.         <!-- 数据库的登陆密码 -->  
  10.         <property name="hibernate.connection.password">root</property>  
  11.         <!-- 方言:为每一种数据库提供适配器,方便转换 -->  
  12.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  13.           
  14.         <span style="color:#ff0000;"><mapping resource="com/example/hibernate/User.hbm.xml"/></span>  
  15.     </session-factory>  
  16. </hibernate-configuration>  

注意:必须是“/”而不能是“.”。

4、生成表:编写工具类ExoprtDB.java,将hbm生成ddl

 

  1. import org.hibernate.cfg.Configuration;  
  2. import org.hibernate.tool.hbm2ddl.SchemaExport;  
  3. /** 
  4.  * 将hbm生成ddl 
  5.  * @author BCH 
  6.  * 
  7.  */  
  8. public class ExoprtDB {  
  9.   
  10.     public static void main(String[] args) {  
  11.         //默认读取hibernate.cfg.xml文件  
  12.         Configuration cfr = new Configuration().configure();  
  13.           
  14.         SchemaExport export = new SchemaExport(cfr);  
  15.         export.create(true, true);  
  16.     }  
  17. }  

到这里就可以生成User表了,但是如果直接运行ExoprtDB.java文件是不能生成User表的。因为在mysql数据中还没有建立数据库Hibernate-first。所以在mysql控制台中通过create database hibernate-first; use hibernate-first;之后再执行ExoprtDB.java文件就可以生成表了。

 

5、向表中添加数据

 

  1. import java.util.Date;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.cfg.Configuration;  
  6.   
  7. public class Client {  
  8.     public static void main(String[] args) {  
  9.         //读取配置文件  
  10.         Configuration cfg = new Configuration().configure();  
  11.           
  12.         SessionFactory factory = cfg.buildSessionFactory();  
  13.           
  14.         Session session = null;  
  15.         try{  
  16.             session = factory.openSession();  
  17.             //开启事务  
  18.             session.beginTransaction();  
  19.               
  20.             User user = new User();  
  21.             user.setUsername("用户名");  
  22.             user.setPassword("123");  
  23.             user.setCreateTime(new Date());  
  24.             user.setExpireTime(new Date());  
  25.               
  26.             session.save(user);  
  27.             //提交事务  
  28.             session.getTransaction().commit();  
  29.               
  30.         }catch(Exception e){  
  31.             e.printStackTrace();  
  32.             //回滚事务  
  33.             session.getTransaction().rollback();  
  34.         }finally{  
  35.             if(session != null){  
  36.                 if(session.isOpen()){  
  37.                     //关闭session  
  38.                     session.close();  
  39.                 }  
  40.             }  
  41.         }  
  42.     }  
  43. }  

 

执行该java文件就可以完成向表中增加数据了,效果如下

 

(四)总结

通过上面的代码我们可以看出,在代码中没有涉及到任何有关JDBC的代码,作为开发人员只需要写好相应的实体类,然后通过配置就可以实现了表的建立以及向表中实现数据的插入。

在代码中有许多Hibernate的核心对象,例如Configuration、SessionFactory、Session等等。这些内容将在以后介绍。

  1. import java.util.Date;  
  2.   
  3. public class User {  
  4.     private String id;  
  5.     private String username;  
  6.     private String password;  
  7.     private Date createTime;  
  8.     private Date expireTime;  
  9.       
  10.     public String getId() {  
  11.         return id;  
  12.     }  
  13.     public void setId(String id) {  
  14.         this.id = id;  
  15.     }  
  16.     public String getUsername() {  
  17.         return username;  
  18.     }  
  19.     public void setUsername(String userName) {  
  20.         this.username = userName;  
  21.     }  
  22.     public String getPassword() {  
  23.         return password;  
  24.     }  
  25.     public void setPassword(String password) {  
  26.         this.password = password;  
  27.     }  
  28.     public Date getCreateTime() {  
  29.         return createTime;  
  30.     }  
  31.     public void setCreateTime(Date createTime) {  
  32.         this.createTime = createTime;  
  33.     }  
  34.     public Date getExpireTime() {  
  35.         return expireTime;  
  36.     }  
  37.     public void setExpireTime(Date expireTime) {  
  38.         this.expireTime = expireTime;  
  39.     }  
  40. }  

 

2、提供User.hbm.xml文件,完成实体类的映射

  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5.       
  6. <hibernate-mapping>  
  7.     <class name="com.example.hibernate.User">  
  8.         <id name="id">  
  9.             <generator class="uuid"/>  
  10.         </id>  
  11.         <property name="username"/>  
  12.         <property name="password"/>  
  13.         <property name="createTime"/>  
  14.         <property name="expireTime"/>  
  15.     </class>  
  16. </hibernate-mapping>  

其中的property标签是将要生成是数据库表中的字段,在这里不用关心各个字段是什么类型的。因为Hibernate会根据上面的实体类中属性的类型来决定将来表中字段的类型

 

3、配置hibernate.cfg.xml文件

  1. <hibernate-configuration>  
  2.     <session-factory >  
  3.         <!-- mysql数据库驱动 -->  
  4.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
  5.         <!-- mysql数据库名称 -->  
  6.         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>  
  7.         <!-- 数据库的登陆用户名 -->  
  8.         <property name="hibernate.connection.username">root</property>  
  9.         <!-- 数据库的登陆密码 -->  
  10.         <property name="hibernate.connection.password">root</property>  
  11.         <!-- 方言:为每一种数据库提供适配器,方便转换 -->  
  12.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  13.           
  14.         <span style="color:#ff0000;"><mapping resource="com/example/hibernate/User.hbm.xml"/></span>  
  15.     </session-factory>  
  16. </hibernate-configuration>  

注意:必须是“/”而不能是“.”。

4、生成表:编写工具类ExoprtDB.java,将hbm生成ddl

  1. import org.hibernate.cfg.Configuration;  
  2. import org.hibernate.tool.hbm2ddl.SchemaExport;  
  3. /** 
  4.  * 将hbm生成ddl 
  5.  * @author BCH 
  6.  * 
  7.  */  
  8. public class ExoprtDB {  
  9.   
  10.     public static void main(String[] args) {  
  11.         //默认读取hibernate.cfg.xml文件  
  12.         Configuration cfr = new Configuration().configure();  
  13.           
  14.         SchemaExport export = new SchemaExport(cfr);  
  15.         export.create(true, true);  
  16.     }  
  17. }  

到这里就可以生成User表了,但是如果直接运行ExoprtDB.java文件是不能生成User表的。因为在mysql数据中还没有建立数据库Hibernate-first。所以在mysql控制台中通过create database hibernate-first; use hibernate-first;之后再执行ExoprtDB.java文件就可以生成表了。

 

5、向表中添加数据

  1. import java.util.Date;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.cfg.Configuration;  
  6.   
  7. public class Client {  
  8.     public static void main(String[] args) {  
  9.         //读取配置文件  
  10.         Configuration cfg = new Configuration().configure();  
  11.           
  12.         SessionFactory factory = cfg.buildSessionFactory();  
  13.           
  14.         Session session = null;  
  15.         try{  
  16.             session = factory.openSession();  
  17.             //开启事务  
  18.             session.beginTransaction();  
  19.               
  20.             User user = new User();  
  21.             user.setUsername("用户名");  
  22.             user.setPassword("123");  
  23.             user.setCreateTime(new Date());  
  24.             user.setExpireTime(new Date());  
  25.               
  26.             session.save(user);  
  27.             //提交事务  
  28.             session.getTransaction().commit();  
  29.               
  30.         }catch(Exception e){  
  31.             e.printStackTrace();  
  32.             //回滚事务  
  33.             session.getTransaction().rollback();  
  34.         }finally{  
  35.             if(session != null){  
  36.                 if(session.isOpen()){  
  37.                     //关闭session  
  38.                     session.close();  
  39.                 }  
  40.             }  
  41.         }  
  42.     }  
  43. }  

 

执行该java文件就可以完成向表中增加数据了,效果如下

 

(四)总结

通过上面的代码我们可以看出,在代码中没有涉及到任何有关JDBC的代码,作为开发人员只需要写好相应的实体类,然后通过配置就可以实现了表的建立以及向表中实现数据的插入。

在代码中有许多Hibernate的核心对象,例如Configuration、SessionFactory、Session等等。这些内容将在以后介绍。

码源:mingli 有兴趣的朋友们可以前往球球哦~一起分享学习技术:2042849237

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 44
码字总数 73777
作品 0
惠州
私信 提问
hibernate问题

大家好,新手上路。如何理解jpa和hibernate的概念,作用,使用?还有如何理解hibernate的session??还有我看hibernate都是dao层都是继承HibernateDaoSupport,然后就是用this.getHiernateT...

樱木花道VS康
2016/10/12
85
1
新手上路之Hibernate(二):基本映射以及一些原则与主键生成策略

一、什么是映射 在上一篇文章中 新手上路之Hibernate:第一个Hibernate例子,通过一个例子了解了什么是hibernate。而其中最重要的就是通过User.hbm.xml来配置映射。这里所说的映射就是对象关...

Airship
2016/12/12
0
0
新手上路之Hibernate:第一个Hibernate例子

一、Hibernate概述 (一)什么是Hibernate? hibernate核心内容是ORM(关系对象模型)。可以将对象自动的生成数据库中的信息,使得开发更加的面向对象。这样作为程序员就可以使用面向对象的思...

Airship
2016/12/12
0
0
hibernate存储大对象

新手上路,如何在struts2下用hibernate把大对象存入数据库,不要自己写本地流验证,要求从页面传过来

乖怪404
2014/06/08
81
0
hibernate如何校验前台提交的数据?

本人是新手。现在遇到一个数据校验问题。在网上看了好多hibernate视频教程。虽然按照他们“教”的也可以把例子做出来。可是,他们都说号称是企业级的开发经验。不过我看完他们的视频从头到终...

红白机
2011/12/10
950
4

没有更多内容

加载失败,请刷新页面

加载更多

day11

architect刘源源
52分钟前
3
0
论学好Linux系统的超级重要性

不知道各位在日常的工作生活中有没有接触过“rm -rf /*”这个命令,因为这个命令搞出来的事情可还不少呢!前段时间就在一个群里看到了有个小伙子,老板让他去维护一下服务器,这小伙也不太懂...

Linux就该这么学
昨天
1
0
git 使用

1,首先在github配置好信息和仓库,然后在本地进行操作 git init git config user.name 'zhangwuer' git config user.email '56789053@qq.com' 2,与远程分支建立连接 git checkout -b test......

天王盖地虎626
昨天
3
0
git checkout 命令详解

在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 在下面的命令中,使用了一些简写,在这里说明一下: git st # git statusgit ci ...

shzwork
昨天
8
0
【Nginx】Nginx多级代理,获取客户端真实请求IP以及每级代理IP

Nginx多级代理,获取客户端真实请求IP以及每级代理IP 如图所示,每一级nginx里的location配置里需要加上对应的配置,最后一级nginx是直接到应用,测试时为了方便,直接用echo模块去测试,打印...

薛定谔的旺
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部