hibernate_介绍2

本文介绍了Hibernate框架的基本配置,包括hibernate.cfg.xml文件中的关键属性及其用途,session和transaction的概念与使用方式,以及对象关系映射的常用配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.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。


2.session简介


  -不建议直接使用jdbc的connection操作数据库,而是通过使用session操作数据库。
  -session可以理解为操作数据库的对象。
  -session与connection,是多对一关系,每个session都有一个与之对应的connection,
     一个connection不同时刻可以提供多个session使用。
  -把对象保存在关系数据库中需要调用session的各种方法,
     如:save(),update(),delete(),createQuery()等。


3.transaction简介
  -hibernate对数据库的操作都是封装在事务当中,并且默认是非自动提交的方式。
    所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会
    真正保存在数据库中。
  -如果你想让hibernate想jdbc那样自动提交事务,必须调用session对象的doWork()方法,
   获得jdbc的connection后,设置其为自动提交事务模式。(注意:通常并不推荐这样做)
  注意:不开启事务就不能将对象保存到数据库中!


4.session详解
  -如何获得session对象
    1)openSession
    2)getCurrentSession


  如果使用getCurrentSession需要再hibernate.cfg.xml文件中进行配置:
  如果是本地事务(jdbc事务)
    <property name="hibernate.current_session_context_class">thread</property>
  如果是全局事务(jta事务)
    <property name="hibernate.current_session_context_class">jta</property>
  
  openSession与getCurrentSession的区别:
   1.getCurrentSession在事务提交或者回滚之后会自动关闭,而openSession
    需要你手动关闭。如果openSession而没有手动关闭,多次之后会导致连接池溢出。
   2.openSession每次创建新的session对象,getCurrentSession使用现有的session对象。


5.对象关系映射常用配置
  <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>
      name="propertyName"
      type="typename"
      column="column_name"
      length="length"
      <generator class="generatorClass"
  </id>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值