Java学习——Hibernate框架-01(第一天)

一. 第一天

1. hibernate框架介绍和框架准备工作

1.1框架是什么?

  框架用来提高开发效率的。  半成品项目

  框架封装好了一些功能,我们需要使用这些功能时,调用即可,不需要再手动实现;

1.2 hibernate框架是什么?

      三层架构:Web层( Struts2框架(代替servlet)+ jsp )

                       Service层( javaBean )

                      dao层(Hibernate框架:代替JDBC和DBUtils,帮我们完成数据库操作的

     Spring框架:横跨web,Service,DAO三层,是项目的容器和对象的管家,负责管理项目中的所有对象

1.3 hibernate的好处

            操作数据库的时候,可以以面向对象的方式来完成,不需要书写SQL语句

1.4 hibernate是一款orm框架(ORM思想)

          ORM(对象关系映射):通过使用配置文件(或其他手段),将对象的信息与数据库中的表进行对应,完成操作数据库,这种性质就称之为ORM。

  ORM分为4级:Hibernate框架属于4级:完全面向对象操作数据库

                              Mybatis属于2级,dbutils属于1级

 

2. hibernate框架搭建

2.1导包

  1. 连接数据库的驱动包: mysql-connector-java-5.1.7-bin.jar   

  2. Hibernate的必需包( required ):Lib下的所需文件夹里面的所有包

 

2.2创建数据库,准备表,实体类

2.3书写ORM元数据(对象与表的映射配置文件)

  导入约束

  实体类

  ORM元数据

2.4书写主配置文件

2.5书写代码测试

 

3. hibernate框架 - 配置文件详解--orm元数据

配置表与实体对象的关系实体配置文件 Customer.hbm.xml

根元素,类元素,标识元素,属性元素,

   

           

                 

                       

                 

               

 

4. hibernate框架 - 配置文件详解--hibernate主配置

     主配置文件的hibernate.cfg.xml文件中 

     hibernate配置文件/ etc / hibernate.properties里面包括所有的配置的汇总,从中找到MySQL的配置信息

     必选属性配置(5个): 数据库驱动,数据库URL,数据库连接用户名, 数据库连接密码,数据库方言

     可选书写配置(3个): 显示sql , 格式化sql , 自动生成表(update)

     ORM元数据引入配置:  路径书写:填写src 下的相对路径,Customer.hbm.xml——右键——Copy Qualified Name(拷贝完整名称,包括路径)   

                    

hibernate框架的api详解:

     configuration : 读取配置;

     sessionFactory: 创建session

     Session: 获得事务操作对象,以及数据增删改查

     Transaction:控制事务

 

5. hibernate框架api详解 -- Configuration对象

Configuration对象的功能:  配置加载类,用于加载主配置 , 以及orm元数据加载

eg:       

  public class Demo {

      @Test
      public void fun1(){
        //1 创建,调用空参构造
        Configuration conf = new Configuration();
        //2 读取指定的主配置文件 => 空参加载方法,默认是 加载src下的 hibernate.cfg.xml文件
        conf.configure();
        //3 读取指定orm元数据(扩展了解知识,用xml文件,则不需要此步骤,古老方法), 如果主配置中已经引入映射配置.则不需要手动加载
        //conf.addResource(resourceName);
        //conf.addClass(persistentClass);
        //4 根据配置信息,创建 SessionFactory对象
        SessionFactory sf = conf.buildSessionFactory( );

       //5 获得session:打开一个新的session对象
        sf.openSession();
      //获得一个与线程绑定的session对象(明天讲解)
       sf.getCurrentSession();
    }
}

 

6. hibernate框架api详解--SessionFactory对象

SessionFactory对象的功能: 用于创建 操作数据库核心对象session对象 的工厂。简单说,其功能就一个:创建session对象
     注意: 1. sessionFactory 负责保存和使用所有配置信息,消耗内存资源非常大;
              2. sessionFactory 属于线程安全的对象设计。
     结论: 保证在web项目中, 只创建一个sessionFactory。

 

7. hibernate框架api详解--Session对象&Transaction对象

    Session对象的功能: 表达hibernate框架与数据库之间的连接(会话)。 Session类似于JDBC年代的Connection对象。

                                     Session还可以完成对数据库中的数据的增删改查操作。 

    Session是hibernate操作数据库的核心对象。

        Session 的事务操作(提交、回滚等)/ 新增/ 查询 / 修改 / 删除

        Transaction : 封装了事务的操作,

eg:   

    @Test
    //session的新增
    public void fun2( ){
        //1 创建,调用空参构造
        Configuration conf = new Configuration().configure();
        //2 根据配置信息,创建 SessionFactory对象
        SessionFactory sf = conf.buildSessionFactory();
        //3 获得session
        Session session = sf.openSession();
        //4 session获得操作事务的Transaction对象
        //方式1:获得操作事务的tx对象
            //Transaction tx = session.getTransaction();

           //tx.begin();
        //方式2:开启事务并获得操作事务的tx对象( 建议使用 )
        Transaction tx2 = session.beginTransaction();
        //----------------------------------------------
        Customer c = new Customer();
        c.setCust_name("传智播客");
        session.save(c);  //保存
        //----------------------------------------------
        tx2.commit( );   //提交事务
        session.close( );  //释放资源
        sf.close( );   //释放资源
    }

8. hibernate框架 - 封装Utils工具类

  HibernateUtils.java :封装Utils工具类   注意:要保证在web项目中, 只创建一个sessionFactory

  eg:  

   public class HibernateUtils {
          private static SessionFactory sf ;
    
    static{
        //1 创建,调用空参构造
           Configuration conf = new Configuration().configure();
        //2 根据配置信息,创建 SessionFactory对象
           sf = conf.buildSessionFactory();
    }
    
    //获得session => 获得全新session
    public static Session openSession(){
                //3 获得session
                Session session = sf.openSession();
                return session;
    }


    //获得session => 获得与线程绑定的session
    public static Session getCurrentSession(){
        //3 获得session
        Session session = sf.getCurrentSession();  
        return session;
    }

   //main方法,用于测试
    public static void main(String[] args) {
        System.out.println(HibernateUtils.openSession());
    }
}

9.练习 - 新增和保存客户

    crm: customer relation manager 客户关系管理系统

9.1  准备

 1.   创建web项目

 2.   导包:

       hibernate包, 数据库驱动包, 标签库包

 3.  引入静态页面

 4.  搭建hibernate 框架

 5.  思路分析:

     (1)客户管理— 添加客户——保存;

     (2)AddCustomerServlet :

              1.  获得表单提交数据,封装到Customer对象中;

              2.  调用Service,保存Customer对象:

                       (1) 创建接口和实现类: CustomerService :  创建方法 void  save(Customer  c );  调用Dao 保存 Customer;

                       (2) 创建接口和实现类:CustomerDao :  创建方法 void  save( Customer  c );      Hibernate 框架完成保存操作

              3.  重定向到Customer列表(未开发)

 6.  开发

 7.  测试

 

 

 

你可能感兴趣的:(Java)