Hibernate是什么

Hibernate是一个轻量级的ORMapping框架

ORMapping原理(Object Relational Mapping)就是把对象里面的数据和数据库里面的数据,依照一定的规则进行映射的过程。

ORMapping基本相应规则:

1:类跟表相相应

2:类的属性跟表的字段相相应

3:类的实例与表中详细的一条记录相相应

Hibernate的实现方式

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVqaW5neXVhbjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Hibernate解决的问题:

通过上图我们也能发现。Hibernate主要用来实现Java对象和表之间的映射。除此之外还提供数据查询和获取数据的方法,能够大幅度降低开发时人工使用SQL和JDBC处理数据的时间。

Hibernate的目标是对于开发人员通常的数据持久化相关的编程任务中解放出来。

Hibernate能够帮助你消除或者包装那些针对特定厂商的SQL代码,而且帮你把结果集从表格式的表示形式转换到一系列的对象去。

hibernate长处:

1、封装了jdbc。简化了非常多反复性代码。

2、简化了DAO层编码工作。使开发更对象化了。

3、移植性好,支持各种数据库。假设换个数据库仅仅要在配置文件里变换配置就能够了。不用改变hibernate代码。

4、支持透明持久化,由于hibernate操作的是纯粹的(pojo)java类。没有实现不论什么接口,没有侵入性。所以说它是一个轻量级框架。

以下结合应用实例帮助大家理解:

实体类:

import java.util.Date;
public class User { private String id;
private String username;
private String userpassword;
private String createTime;
private String expireTime; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String name) {
this.username = name;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String password) {
this.userpassword = password;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getExpireTime() {
return expireTime;
}
public void setExpireTime(String expireTime) {
this.expireTime = expireTime;
}
}

创建hibernate映射文件User.hbm.xml

映射文件告诉Hibernate它应该訪问数据库里面的哪个表(table)和应该使用表里面的哪些字段(column)。

由于这里仅仅有一个Class ---User和一个Table --- t_user,你仅仅须要建立一个映射文件---User.hbm.xml,来相应User类和t_user表之间的关系。

<hibernate-mapping package="com.bjpowernode.hibernate">
<class name="User" table="t_user">
<id name="id">
<generator class="uuid"></generator>
</id>
<property name="username"></property>
<property name="userpassword"></property>
<property name="createTime"></property>
<property name="expireTime"></property>
</class> </hibernate-mapping>

配置Hibernate描写叙述文件hibernate.cfg.xml

Hibernate描写叙述文件能够是一个properties或xml文件,当中最重要的是定义数据库的连接。我这里列出的是一个XML格式的hibernate.cfg.xml描写叙述文件。

<hibernate-configuration>
<session-factory >
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">hejingyuan</property>
<!-- 方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show.sql">true</property>
<property name="hibernate.show.format_sql">true</property>
<!-- 指定User的映射文件 -->
<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

生成表方法

/**
* 将hbm生成ddl
* @author Administrator
*
*/
public class ExportDB { public static void main(String[] args) {
//默认读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
}
}

加入用户

public static void main(String[] args) {
//读取hibernate.cfg.xml文件--缺省默认文件,假设仅仅new的话。会读取porperties
Configuration cfg=new Configuration().configure(); //建立SessionFactory,线程安全的。最好一个数据库创建一次
SessionFactory factory=cfg.buildSessionFactory(); //取得Session,真正要用的时候才去关联connection,这个connection与我们之前学的不同,称为持久化管理器
Session session=null;
try{
session=factory.openSession();
//开启事务
session.beginTransaction();
User user=new User();
user.setUsername("张三");
user.setUserpassword("123");
user.setCreateTime(new Date().toString());
user.setExpireTime(new Date().toString()); //保存User对象
session.save(user);
//提交事务
session.getTransaction().commit(); }catch(Exception e){
e.printStackTrace();
//回滚事务
session.getTransaction().rollback();
}finally{
if(session != null){
if(session.isOpen()){
//关闭session
session.close();
}
}
} }

总结:

千里之行始于足下,这篇文章仅是迈向Hibernate大道的一个起点。以上仅仅是简介了Hibernate解决的问题。事实上Hibernate就是一个转换器。完毕对象实例与数据库表的转换,对JDBC訪问数据库的代码进行封装。简化了数据訪问层繁琐的反复性代码。

下篇继续!

【SSH 基础】浅谈Hibernate--入门篇的更多相关文章

  1. 浅谈Hibernate入门

    前言 最近打算做一个自己的个人网站,经过仔细思考,打算使用hibernate作为开发的ORM框架,因此各种找资料,由于本人是刚刚接触这技术的,所以就找了比较基础的知识来分享下 基本概述 Hiberna ...

  2. 浅谈hibernate+入门实例

    Hibernate是对jdbc进一步的封装,随着项目的开展,小编开始接触到这个概念,一开始接触的时候并没有觉得hibernate有多神秘,没有进一步的研究,只是简单的知道她是对jdbc的进一步的封装, ...

  3. C#核心基础--浅谈类和对象的概念

    浅谈类和对象的概念 一.什么是类?什么是对象? 学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象? 类(Class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有 ...

  4. 动静结合?Ruby 和 Java 的基础语法比较(入门篇)

    前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...

  5. 【推荐】JAVA基础◆浅谈3DES加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  6. 【SSH 基础】浅谈Hibernate关系映射(4)

    继上篇博客 多对多关联映射(单向) 多对多对象关系映射,须要增加一张新表完毕基本映射. Hibernate会自己主动生成中间表 Hibernate使用many-to-many标签来表示多对多的关联,多 ...

  7. 【SSH 基础】浅谈Hibernate关系映射(3)

    继上篇博客 一对多关联映射(单向) 上面我们介绍了多对一,我们反过来看一对多不就是多对一吗?那还用再进行不同的映射吗?有什么区别吗?一对多和多对一映射原理是一致的,存储是同样的.也就是生成的数据库的表 ...

  8. salesforce lightning零基础学习(九) Aura Js 浅谈二: Event篇

    上一篇介绍了Aura Framework中 Component类的部分方法,本篇将要介绍Event常用的方法. 1. setParam (String key , Object value):设置事件 ...

  9. salesforce lightning零基础学习(八) Aura Js 浅谈一: Component篇

    我们在开发lightning的时候,常常会在controller.js中写 component.get('v.label'), component.set('v.label','xxValue'); ...

随机推荐

  1. 结对项目--黄金点游戏(邓乐&曾亮)

    #include<stdio.h> #include<stdlib.h> #include<Windows.h> int result[100][1000000]; ...

  2. 【转】Nutz | Nutz项目整合Spring实战

    http://blog.csdn.net/evan_leung/article/details/54767143 Nutz项目整合Spring实战 前言 Github地址 背景 实现步骤 加入spri ...

  3. (转)淘淘商城系列——发布dubbo服务

    http://blog.csdn.net/yerenyuan_pku/article/details/72758639 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入, ...

  4. 浮动qq客服备份代码

    <div class="main-im"> <div id="open_im" class="open-im"> & ...

  5. js 或jquery定义方法时,参数不固定是怎么实现的

    //①不定义接受参数的方式来接受参数(arguments) function getparams(){ //利用arguments来接受参数,arguments表示参数集合, //里面存放的调用这个方 ...

  6. 数据库insert update select语句

    http://database.51cto.com/art/200903/113939_1.htm                   (更新语句) http://blog.csdn.net/chan ...

  7. [C#] 对List进行分组排序后输出

    Student 类: public class Student { public int ID { get; set; } public string Name { get; set; } publi ...

  8. 诊断:AWR快照停止自动采集

    11.2.0.4数据库中,MMON进程,有时候由于一些莫名其妙的原因挂掉,接下来AWR的快照也就无法正常自动生成.MMON进程应该自动重启,却并没有自动被启动. 那么我们有可能是遇到了bug Bug ...

  9. getHiddenProp() 浏览器状态切换改变

    <script> function getHiddenProp() { var prefixes = ['webkit', 'moz', 'ms', 'o']; // if 'hidden ...

  10. SDOI2015约数个数和

    题目描述 题解: 有一个式子: 证明先不说了. 然后倒一波反演: 然后整除分块就好了. 代码: #include<cstdio> #include<cstring> #incl ...