Hibernate配置和对象详解

Hibernate.cfg.xml常用配置

属性名含义
hibernate.show_sql是否把Hibernate运行时的SQL语句输出到控制台,编码阶段便于测试。
hibernate.format_sql输出到控制台的SQL语句是否进行排版,便于阅读。建议设置为true。
hbm2ddl.auto可以帮助有java代码生成数据库脚本,进而生成具体的表结构。create/update/create-drop/validate
hibernate.default_schema默认的数据库
hibernate.dialect配置Hibernate数据库方言,Hibernate可针对特殊的数据库进行优化

注:hibernate的前缀可以省略,即:hibernate.dialect等于dialect

session简介

  • hibernate的执行流程:
    Markdown
  • 操作数据库的对象
  • session与connection是多对一的关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用
  • session的方法:save()、update()、delete()、createQuery()等

transaction简介

  • hibernate对数据的操作都是封装字事务当中,并且默认是非自动提交的方式,所以用session保存对象时,如果不开启事务,并且手动提交事务,对象并不会真正保存在数据库中
  • 如果想让hibernate像jdbc那样自动提交事务,必须调用session对象的doWork()方法,获得jdbc的connection后,设置其为自动提交事务模式(通常不推荐这样做)
     
    session.doWork(new Work(){
    public void execute(Connection connection) throws SQLException{
    connection.setAutoCommit(true);
    }
    })
    session.save(对象实例);
    session.flush();

session详解

  • 如何获得session对象
    • openSession
    • getCurrentSession(单例模式)
      • 如果使用getCurrentSession需要在hibernate.cfg.xml文件中进行配置:
      • 如果是本地事务(jdbc事务):

hbm配置文件常用设置


<hibernate-mapping
    schema="schemaName" //设置模式名字
    catalog="catalogName"   //设置目录名称
    default-cascade="cascade_style" //级联风格
    default-access="field|property|ClassName"   //访问策略
    default-lazy="true|false"   //加载策略
    package="packagename"       //设置默认包名
/>

<class
    name="ClassName"    //映射到哪个类
    table="tableName"   //映射到哪张表
    batch-size="N"      //抓取策略,一次抓取多少条记录
    where="condition"   //抓取条件
    entity-name="EntityName"    //支持一个实体类映射到多张表
/>

<id  //id表示主键
    name="propertyName" //映射到哪个属性
    type="typename"     //数据类型
    column="column_name"//数据库中字段名
    length="length"     //数据长度
    <generaotr class="generatorClass"/>   //主键生成策略
/>
  • 常见主键生成策略
    Markdown
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值