为什么使用Hibernate

来源:互联网 发布:php自学书籍 编辑:程序博客网 时间:2024/05/21 12:08

为什么使用Hibernate?

这个问题就像我们为什么使用MVC,设计模式一样,我们使用它们的目的就是为了方便,而它们之所以会存在就是因为它们有自己的特点。

今天就来通过认识Hibernate,从而知道我们为什么要使用它。

 

一、Hibernate的由来:

   我们平常做开发的时候经常需要使用到JDBC连接来读写数据库,最常见的就是打开数据库连接、使用复杂的SQL语句进行读写、关闭连接,获得的数据又需要转换或封装后往外传,这是一个非常烦琐的过程。

   这时出现了Hibernate框架,它很好的解决了这一繁琐的问题。

 

二、Hibernate的概念:

   Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

   换句话说,Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

  下面我来展示一下不使用Hibernate和使用Hibernate的D层的代码:

    使用Hibernate前:

 

public void addItem(Connection conn, Item item) {String sql = "insert into t_items (item_no, item_name, spec, pattern, category, unit) " +"values (?, ?, ?, ?, ?, ?)";PreparedStatement pstmt = null;try {//Dao的设计通常是单纯的,不应该放入太多的逻辑//因为Dao是我们程序的最底层,所以越通用越好pstmt = conn.prepareStatement(sql);pstmt.setString(1, item.getItemNo());pstmt.setString(2, item.getItemName());pstmt.setString(3, item.getSpec());pstmt.setString(4, item.getPattern());pstmt.setString(5, item.getItemCategory().getId());pstmt.setString(6, item.getItemUnit().getId());pstmt.executeUpdate();} catch (SQLException e) {throw new AppException("添加物料失败!");} finally {DBUtil.close(pstmt);}}


    使用Hibernate后:

  

public void addItem(Session session, Item item) {session.save(item);}


   从对比中我们可以看到使用Hibernate后代码清爽了很多。

 

三、Hibernate的优点

     Hibernate除了上面所说的可以减少代码量还有下面的优点:

  1. 提高生产力

因为是基于JDBC的封装,所以代码更加简练了,生产力自然得到了提高。

 

  1. 使开发更加对象化

因为Hibernate是对ORM(对象/关系数据库映射)的一个很好的实现。

所以它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想。

 

  1. 可移植性

Hibernate中不涉及sql语句,sql语句虽然是标准的,但是各个数据库厂商会有不同,使用hibernate标准API,会自动转换成相应的数据库sql语句,关键是hibernate配置文件中方言的配置。

 

  1. 支持透明持久化

Hibernate的API没有侵入性(即所编写的类不需要继承Hibernate的API),对于实体类来说,既可以使用普通的JDBC,也可以使用Hibernate。

 

四、Hibernate的适用范围

   凡事有利必有弊,由于我们Hibernate的特点,所以它存在着一些局限性。

    1.由于Hibernate是对ORM的实现,所以它只适合于所有的关系型数据库。

    2.由于Hibernate中不涉及sql语句,所以它对大批量数据更新及统计查询功能会有问题。

    3.对于一些Hibernate中的映射标签,因为已经封装好,所以它们的实现也需要一些相应技术的支持。

 

   以上对Hibernate进行了初步的介绍,相信大家对Hibernate有了一些认识,也知道了我们使用它就是为了在适当的时候(它的适用范围内)为我们提供一些方便。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 任职履历上学历写错了怎么办 六个月的宝宝老长婴儿湿疹怎么办 入伍前驾照没考完退伍后过期怎么办 在电脑上玩英雄联盟没有声音怎么办 梦幻西游新区抢不到副本积分怎么办 倒车时遇上机动车碰瓷的怎么办 电瓶车相撞对方全责但不赔偿怎么办 轻微刮蹭逃逸对方想多要钱怎么办 正常开车撞伤了闯红灯的人怎么办 发现小事故要保持现场堵车怎么办 私处刮毛外面皮肤不小心弄伤怎么办 老婆骂孩子不准老公带饿小孩怎么办 结婚3年妻子不让丈夫碰怎么办 老婆出轨现在没证据他要离婚怎么办 结婚后老婆不让碰分房睡离婚怎么办 电动车调速把手变速挡坏了怎么办 路边车辆贴条了超过15天了怎么办 违停交警拍照了没贴条 照片怎么办 支付宝违章缴费罚单输错了怎么办 交警查酒驾跑了把警车撞了怎么办 禁止进入待行区的时候进入了怎么办 今天开车把72岁老太婆撞了怎么办 在这种路口遇到行人突然横穿怎么办 在左拐车道却直行了怎么办 路边简易房让拆除不想拆怎么办 英国护照的名和姓印颠倒了怎么办 加热圈功率小加不到设定温度怎么办 本田飞度05年车尾气不好怎么办 文件在lr中打开后找不到了怎么办 手机安装软件成功屏幕上没有怎么办 脸过敏发红痒怎么办用什么药膏 脸上又红又肿又痒怎么办 宝宝把皮革咬烂吃掉了怎么办 自动档皮革挡把防尘套烂了怎么办 pu包用酒精擦坏了怎么办 白色的面料被84弄黄了怎么办 要账的人赖在家不走怎么办 两塔吊的安全距离不够2米怎么办 腿上被蚊子咬后留下的黑疤怎么办 携程订的酒店酒店一直没确认怎么办 客斤的无窗挨着厨房怎么办