Java Web之Hibernate框架

          Java Web框架之Hibernate

 

1. Hibernate的定义:

    Hibernate是一个基于JDBC的开源的持久化框架,是一个优秀的ORM实现,它很大程度的简化了DAO层编码工作。Hibernate         对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 

    在分层结构中处于持久化层,封装对数据库的访问细节,使业务逻辑层更专注于实现业务逻辑。 

 

2. Hibernate的开发步骤:

1.创建持久化类

2.创建对象-关系映射(ROM)文件

3.创建Hibernate配置文件

4.通过Hibernate API编写访问数据库的代码

               Java Web之Hibernate框架_第1张图片

 

 

1.创建持久化类:

  /**
 * 实体
 */
public class User {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "[User: id=" + id + ", name=" + name + "]";
    }

}

 

2. 创建对象-关系映射文件*.hbm.xml:

 (Hibernate之所以能够智能地判断实体类和数据表之间的对象关系,就是因为有映射文件)























 

3. 创建Hibernate配置文件hibernate.cfg.xml:(在src目录下)


    

        
        
        org.hibernate.dialect.MySQLDialect
        jdbc:mysql:///hibernate_20160926
        com.mysql.jdbc.Driver
        root
        yezi

        
        
        true

        
        

    

 

 

4.  通过Hibernate API编写访问数据库的代码:

编程步骤:

  1. 获取Configuration对象。
  2. 获取SessionFactory对象。
  3. 获取Session,打开事务Hibernate对JDBC进行了一种包装,提供了另外一套API来操作数据,其中与数据直接打交道的是Session,它是Hibernate的一级缓存,保持着应用程序与数据库之间的连接,通过它保持内存与数据库之间的数据同步。
  4. 用面向对象的方式操作数据库。
  5. 关闭事务,关闭Session。

 

public class App {

    private static SessionFactory sessionFactory;

    static {
        Configuration cfg = new Configuration();
        cfg.configure("hibernate.cfg.xml"); // 读取指定的主配置文件
        sessionFactory = cfg.buildSessionFactory(); // 根据配置生成Session工厂
    }

    @Test
    public void testSave() {
        User user = new User();
        user.setName("张三");

        // 保存
        Session session = sessionFactory.openSession(); // 打开一个新的Session
        Transaction tx = session.beginTransaction(); // 开启事务

        session.save(user);

        tx.commit(); // 提交事务
        session.close(); // 关闭Session,释放资源(不一定是真正的关闭)
    }

    @Test
    public void testGet() {
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();

        User user = (User) session.get(User.class, 1); // 获取?
        System.out.println(user);

        tx.commit();
        session.close();
    }
}

注意:Session的管理,Spring会帮助关闭的

  这样一看我们的方法写的代码也是挺多了,想说的是这里只是写出了Hibernate框架是从创建sessionFactory对象,然后创建session对象,通过session对象进行对数据库的操作。其实真正的开发中,我们会把这些对象,事务的操作交给框架来管理,我们需要做的就是持久化操作的那些代码,是非常少的。

 

5. Hibernate的优点、缺点:

优点:

  1. 轻量级的ORM框架
  2. 对JDBC进行很好的封装,使用ORM映射,可以通过面向对象的方式操作数据库
  3. 提供了缓存机制,可以提高效率

 缺点:如果对大量的数据进行频繁的操作,性能效率低,不如直接使用JDBC。

 

6. ORM(object Relation Mapping)对象关系数据库的映射:

这是Hibernate框架的重点,也就是说我们程序中的实体(bean,这里也叫POJO)和数据库中的表进行映射。Java类型和sql类型映射,面向对象设计和关系型数据库设计的映射,从而我们只需要把更多的精力放在业务中。

 

7.  MyBatis和Hibernate的区别

 1、Hibernate 是一个标准的ORM框架(对象关系映射框架),不需要程序写sql,sql语句自动生成,对sql语句进行优化、修改          比较困难。全自动的、完全面向对象的持久层框架。

 2、MyBatis专注于sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。是一个不完全的ORM框架,虽然程序员自          己写sql,MyBatis也可以实现映射(输入映射,输出映射)半自动化的持久层框架。

  3、Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护sql和结果映射。

  4、Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。

  5、Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同sql。

   6、Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。

   7、MyBatis可以进行更为细致的SQL优化,可以减少查询字段。

你可能感兴趣的:(Java Web之Hibernate框架)