• Hibernate学习二----------hibernate简介


    © 版权声明:本文为博主原创文章,转载请注明出处

    1.hibernate.cfg.xml常用配置

      - hibernate.show_sql:是否把Hibernate运行时的SQL语句输出到控制台,编码阶段便于测试

      - hibernate.foramt_sql:输出到控制台的SQL语句是否进行排版,便于阅读。建议设置为true

      - hbm2ddl.auto:可以帮助由java代码生成数据库脚本,进而生成具体的表结构。create|update|create-drop|validate

      - hibernate.default_schema:默认的数据库,创建表时会加上对应的数据库。eg:create table hibernate.student(...)

      - hibernate.dialect:配置Hibernate数据库方言,Hibernate可针对特殊的数据库进行优化

    2.Hibernate执行流程

      - 1.应用程序先创建Configuration类的对象,调用对象的configure()方法来读取Hibernate的配置文件(.cfg.xml)和映射文件(.hbm.xml)中的信息

      - 2.再调用Configuration对象的buildSessionFactory()方法来创建SessionFactory对象

      - 3.再调用SessionFactory对象的openSession()方法,来创建Session对象

      - 4.再调用Session对象的beginTransaction()方法,来开启事务,创建Transaction对象

      - 5.利用Session对象来对数据进行持久化操作

      - 6.持久化操作完成后,Transaction对象提交事务,将数据保存到数据库中

      - 7.关闭Session,SessionFactory

      

      说明:

        1.不建议直接使用jdbc的connection操作数据库,而是通过使用session来操作数据库

        2.session可以理解为操作数据库的对象

        3.session与connection是多对一的关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用

        4.把对象保存到关系数据库中需要调用session的各种方法,eg:save()、update()、delete()、createQuery()等

    3.Hibernate开发流程

      1. 编写配置文档hibernate.cfg.xml
      2. 编写实体类
      3. 生成对应实体类的映射文件并添加到配置文档中
      4. 调用Hibernate API进行测试

    4.transaction简介

      - 1.Hibernate对数据的操作都是封装在事务当中,并且默认是非自动提交方式。所以用session保存对象时,如果不开启事务,并且手动提交事务,对象并不会真正保存在数据库中

      - 2.如果你想让Hibernate想jdbc那样自动提交事务,必须调用session对象的doWork()方法,获取jdbc的connection后,设置其为自动提交事务模式(通常并不推荐这样做

    // 创建学生对象
    Student student = new Student(1, "张三", "男", new Date(), "张家村");
    		
    session.doWork(new Work() {
    			
    	public void execute(Connection connection) throws SQLException {
    				
    		connection.setAutoCommit(true);// 设置为自动提交事务模式
    				
    	}
    });
    		
    session.save(student);// 保存对象到数据库中
    session.flush();// 强制输出SQL语句
    

    参考:http://www.imooc.com/learn/396

  • 相关阅读:
    lintcode:数字三角形
    lintcode:Search Insert Position 搜索插入位置
    lintcode:搜索二维矩阵II
    lintcode :搜索二维矩阵
    Linux du命令详解
    Linux df命令详解
    Linux date命令详解
    Linux tcpdump命令详解
    Linux挂载共享命令
    Linux scp命令详解
  • 原文地址:https://www.cnblogs.com/jinjiyese153/p/6903489.html
Copyright © 2020-2023  润新知