为什么使用hibernate,hibernate优缺点

       为什么使用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());

        为什么使用Hibernate

         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的封装,所以代码更加简练了,生产力自然得到了提高。

         2. 使开发更加对象化

 

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

 

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

        完全的面向对象思想。

         3. 可移植性

 

       Hibernate中不涉及sql语句,sql语句虽然是标准的,但是各个数据库厂商会有

        不同,使用hibernate标准API,会自动转换成相应的数据库sql语句,关键是

 

 

       为什么使用Hibernate

 

       hibernate配置文件中方言的配置。

 

         4. 支持透明持久化

 

       Hibernate的API没有侵入性(即所编写的类不需要继承Hibernate的API),对

       于实体类来说,既可以使用普通的JDBC,也可以使用Hibernate。

 

       四、Hibernate的适用范围

 

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

       性。

 

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

       库。

 

           2.由于Hibernate中不涉及sql语句,所以它对大批量数据更新及统计查

       询功能会有问题。

 

           3.对于一些Hibernate中的映射标签,因为已经封装好,所以它们的实

       现也需要一些相应技术的支持。

 

          以上对Hibernate进行了初步的介绍,相信大家对Hibernate有了一些认

       识,也知道了我们使用它就是为了在适当的时候(它的适用范围内)为我们提

       供一些方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值