Hibernate进阶知识点必备

hibernate.cfg.xml的常用的配置

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

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

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

    • create: 每次都会创建一个新的表结构(慎用)
    • update: 更新变化的部分,会维持原有的测试数据的存在
    • create_drop: 如果有就删掉再重新生成(慎用)
    • validate: 验证表结构有无冲突,有冲突则不进行操作
  • hibernate.default_schema: 默认的数据库。在创建数据库表结构的时候会加上此前缀
  • hibernate.dialect:配置Hibernate数据库的方言,Hibernate可以针对特殊的数据库进行优化!

session的简介

先看一下,hibernate的执行流程吧。

  • 首先是Configuration(hibernate.cfg.xml)
  • 然后是SessionFactory(Beans.hbm.xml):创建和销毁都相当的耗费资源,通常一个系统内一个数据库只创建一个这样的对象
  • Session: 相当于传统的JDBC中的Connection(但是session与connection是多对一的关系。开发的时候尽量不要使用connection):

    -开启一个事务(Transaction)

    • 利用session进行CRUD操作
    • 事务提交(transaction。commit())
    • 关闭会话(session.close())
    • 关闭sessionFactory(如果需要的话,一般不需要)
  • 如何获取session对象:
    • openSession的方式:针对的是sessionFactory而言。
    • getCurrentSession的方式():需要在hibernate.cfg.xml中实现对name为hibernate.current_session_context_class的属性的配置。值为thread代表本地事务。jta 代表全局事务。
    • 这二者的区别:后者事务提交或者回滚后悔自动的关闭,前者需要手动的关闭;后者使用的是单例模式,即只是对同一个底层的session的操作,前者则是每次创建一个新的session进行操作。

Transaction的简单的叙述

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

但是如果你想让Hibernate像JDBC那样自动的提交事务,必须调用session的对象的doWork()方法,获得JDBC的connection后,设置其为自动提交事务模式。

通常来说,不建议采用自动提交的方式。因为要实现session的doWork方法,里面是一个匿名的类,。

hbm.xml配置文件常用的设置

<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" />
    />
时间: 2024-10-03 01:10:14

Hibernate进阶知识点必备的相关文章

【框架】[Hibernate]构架知识点常见操作

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 配置文件.JavaBean.HibernateSessionFactory等代码,请看上一篇: [框架][Hibernate]构架知识点详解入门与测试实例 Hibernate常见操作 如果利用Hibernate修改数据库时,需要使用事务处理,一个事务提交时才真正将修改过的记录更新到数据库中. 1.增加记录 @Test public void addStudent(){ Sessio

【框架】[Hibernate]构架知识点详解入门与测试实例

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] Hibernate介绍: Hibernate是一个开放源码的.非常优秀.成熟的O/R Mapping框架.它提供了强大.高性能的Java对象和关系数据的持久化和查询功能. O/R Mapping 对象关系映射(Object Relational Mapping,简称ORM)技术,是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据库中. 对象和关系

[Android] 进阶知识点题型整理

版权声明:请尊重个人劳动成果,转载注明出处,谢谢! 下面异常是属于Runtime Exception 的是(abcd)(多选) A.ArithmeticException   B.IllegalArgumentException   C.NullPointerException   D.BufferUnderflowException 解析: Java提供了两类主要的异常:runtime exception和checked exception.checked 异常也就是我们经常遇到的IO异常,以

iOS 使用Block

引言: Block是Apple在iOS4.0对Objective-C引入的新特性,通过Block可以增强代码的可读性和耦合性,减少非必要性的代理(Delegate)模式. Block是一个代码块,非常类似JavaScript里面的匿名函数,也可以叫做闭包,所以你也可以用匿名函数的方式来理解Block. 本文Block的运行环境是在ARC模式下进行,非ARC的Block内存管理方面还是较为繁琐.所以,有了ARC,开发者不必过多的去关注Block在内存支配方面的问题. 参考资料:  1:Block使

羽毛:seoer必备高级搜索引擎指令进阶(上)

在我的几个QQ群里经常有些站长朋友会问些诸如"H1标签是什么意思""关键词密度怎么查啊?""哪里找高质量外链啊?""为什么要页面静态化"等类似问题. 经过羽毛细心观察,碰到这类问题,很多老鸟会做如下反应:百度一下,你就知道;发一张"破口大骂:百度不会就谷歌"的QQ表情;说委婉点的是:搜索引擎是最好的老师,你懂的啊~~~ 真的是那些老鸟那么傲,懒得回答这些问题,不想理睬新手朋友吗?还是想表达什么意思呢? 羽毛

羽毛:seoer必备高级搜索引擎指令进阶(下)

前几天<羽毛:seoer必备高级搜索引擎指令进阶(上) >中给大家分享了精准完整匹配""的使用;通匹配*的使用;还有inurl这个高级指令来寻找所需网站.有不少站长朋友看了大呼过瘾,觉得对其有帮助,加我好友,进群交流,询问其他指令;这里羽毛再继续分享,希望能够对朋友们有所帮助,乐哉! 1,intitle搜索指令:使用 intitle指令返回的是页面title中包含关键词的页面. 这个指令百度和谷歌都是支持的.比如我要看下哪些页面标题里包含"羽毛seo",

实战JSP进阶编程之三:在Tomcat下配置Hibernate的开发环境

这是实战JSP进阶编程之三. 今天花了几个小时,终于将机房里面的Tomcat+Hibernate的开发.学习环境配置好了. 应用场景:Tomcat 5.5, Hibernate 2.1.7, Mysql 3.23.43, Mysql Driver:3.0.14, JDK: 1.4.2 OS: TurboLinux Server 8.0 用户环境:普通学生帐户--j2ee,位置: /home/j2ee/public_html 为了方便初学者,本教程特意作了简化处理. 1.将hibernate2.j

Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件

原文:转:Java IDE 编辑器 --- IntelliJ IDEA 进阶篇 生成 hibernate 实体与映射文件 2011-04-30 12:50         很多人不知道怎么用 IntelliJ IDEA 编辑器生成 Hibernate 实体映射文件,很多人认为 IDEA 不支持此功能,或者需要安装特定的插件才能完成该操作.实际上 IDEA 支持该功能也无需安装IntelliJ IDEA插件.          以下为 IntelliJ IDEA 编辑器生成 Hibernate 实

Kiwi,BDD行为测试框架–iOS攻城狮进阶必备技能

Kiwi,BDD行为测试框架–iOS攻城狮进阶必备技能 http://www.ios122.com/ 简介 Kiwi 是一个适用于iOS开发的行为驱动测试框架,旨在提供一个足够简单易用的BDD库. 项目主页: https://github.com/kiwi-bdd/Kiwi 示例下载: https://github.com/ios122/ios122 使用Cocopods 安装 1 2 3 4 target :AmazingAppTests, :exclusive => true do   po