JMX:Java Management Extensions.
JCA: J2EE Contector Architecture
JNDI: Java Namind and Directory Interface.
Hibernate并不是作为数据库连接层替代JDBC,而是位于JDBC之上的一层。
无论在什么环境中集成Hibernate,都需要定义应用的配置细节,然后用一个Configuration对象表示这些信息,才能够Configuration对象创建一个SessionFactory对象,然后从SessionFactory对象实例化Session对象,应用程序通过Session对象访问Hibernate的数据库表示。

一、Hibernate总括:

* 1、数据库本身不能被创建,只能创建数据库的表,所以,
 *    在利用hibernate创建数据库的表时应当首先手动创建
 *    数据库本身。
 * 2、hibernate的默认配置文件名是hibernate.cfg.xml,如果创建的
 *    配置文件的文件名与此默认不相同则应该调用带文件名参数的
 *    configure(configfilename)方法,即:
 *    Configuration cfg=new Configuration().configure("configfilename")
 * 3、Configuration是hibernate的入口,而Configuration得实例化必须首先加载
 *    配置文件,该配置文件确定了数据库的配置信息同时引入了生成的数据库表的
 *    字段映射文件,配置文件的后缀名是:cfg.xml,而字段映射文件的后缀名则是
 *    hbm.xml
 * 4、hbm映射文件放在与类字节码文件同一目录下不是必须的,但必须保证cfg配置文件
 *    中mapping元素节点的resource属性所指向的文件全名与hbm映射文件的实际地址相同
 *    否则将抛出异常,但hbm映射文件的前缀名不一定与该文件中class节点元素的name所
 *    指向的类名保持一致,只是为了考虑便于类与数据库表的对应以免混淆才使文件名前缀
 *    与该文件中class节点元素的name属性所指向的类名相同,这样做了之后,通过文件名便
 *    知道该映射文件是属于哪一个类对数据库表的映射。
 * 5、hibernate的两个配置文件中只有cfg配置文件的位置是固定在class目录之下,而映射文件
 *    的路径并不固定,这一点与struts的配置文件有区别,struts的配置文件的位置基本上都
 *    是固定的,这是因为在struts.xml文件中没有任何路径信息对其它配置文件的指向进行说明
 *    而hibernate中的cfg配置文件中有resource属性对其它配置文件的路径进行说明。
 * 6、如果数据中已经有一个表与当前所创建的表完全相同也不会发生异常,此时创建的新表将替换
 *    存在的旧表,即覆盖旧表。
 * 7、映射规则:
 *    A、hbm映射文件中定义的字段名称必须与映射类的属性名称保持一致,否则将抛出异常
 *    B、hbm映射文件中必须要有主键,该键不能缺少否则将抛出异常
 *    C、hbm映射文件中非主键可以不给出定义,于此,数据库表中将不生成该字段
 *    D、有A、C两点可以看出数据库表中的字段名称必须与映射的类中属性名称相同
 *       但属性字段的个数则不一定对应。
 二、Hibernate插入数据:
 *
 * 1、不能向数据库中插入存在约束的数据,否则将抛出异常,比如:
 *    不能有两次插入相同的id,因为id是数据库表中的主键,其值
 *    是唯一的,两次插入相同的id值将导致数据库表中的id键值重
 *    复,从而抛出异常。
 * 2、若没有设置主键id的值,则对象的属性成员将接受JVM分配的默认值,如
 *    字串为null,数值类型为0;主键为null时将不能向表中插入数据,
 *    但不会抛出异常。
 三、Hibernate删除数据:
 * 1、对于删除数据库记录的情况只需要指定主键即可(注意:这种
 *    情况只能指定主键,不能指定其它的非主键值作为删除条件)
 * 2、可以采用HQL(注意这里只能采用HQL语句,不支持SQL语句)语句
 *    来进行条件删除,此时必须利用Session调用createQuery()来
 *    创建一个Query的预编译对象,该对象调用setObject()方法为
 *    占位符赋值,最后由该对象调用executeUpdate()来准备操作数据库
 四、Hibernate更新数据:
   1、修改时必须用set()方法指明主键,否则将抛出异常
 * 2、其它字段原则上还是要通过set()方法来重新指定,否则hibernate
 *    将采用类中成员的默认值(引用类型为null,数值类型为0)
 * 3、如果类中的字段较多时可以采用反射来完成赋值。
 * 4、在修改时通过set方法所给定的条件数据必须符合表中字段的值,
 *    如果表中没有任何字段或是条件不合符表中字段都将抛出异常。
 * 5、事务在完成之后必须采用commit()方法提交事务,否则将不会对
 *    数据库表做任何修改,只有在利用commit方法提交事务时,其增删改查等
 *    动作才开始正式执行。
 * 6、一次会话完成之后通常要关闭数据库连接流,注意:关闭此流并不等于不用
 *    commit提交事务就能完成数据库操作,要完成数据库的操作必须用commit提交事务。
 五、Hibernate查询数据:
    1、在Hibernate中执行SQL语句的占位赋值时下标从0开始的
    2、查询时把数据库中的数据提取出来,没有事务的概念
       而增删改则牵涉对数据库的修改所以有事务的概念
    3、查询中只能通过HQL或SQL语句来进行查询,会话对象
       Session中没有专门的查询方法。
    4、最后不推荐使用SQL语句,SQL的语句执行结果经常发生类型与
       原定义类型不兼容的情况。
    5、这里提出的建议是最好将会话流关闭,尽管仍然能够查询出数据
 六、Hibernate创建表:
     Configuration cfg=new Configuration().configure("hibernate.cfg.xml全名");

SchemaExport sExport=new SchemaExport(cfg);
 
    sExport.create(true,true);

Hibernate 总结(转)的更多相关文章

  1. hibernate多对多关联映射

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  2. 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用

    问题: Springboot启动报错: Caused by: org.springframework.beans.factory.BeanCreationException: Error creati ...

  3. hibernate多对一双向关联

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  4. Hibernate中事务的隔离级别设置

    Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下

  5. Hibernate中事务声明

    Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...

  6. spring applicationContext.xml和hibernate.cfg.xml设置

    applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...

  7. [原创]关于Hibernate中的级联操作以及懒加载

    Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...

  8. hibernate的基本xml文件配置

    需要导入基本的包hibernate下的bin下的required和同bin下optional里的c3p0包下的所有jar文件,当然要导入mysql的驱动包了.下面需要注意的是hibernate的版本就 ...

  9. Maven搭建SpringMVC+Hibernate项目详解 【转】

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

  10. 1.Hibernate简介

    1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发;           b.大大减少代码量;           c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...

随机推荐

  1. 优客源创会 西安站 西邮Linux兴趣小组

    2016年5月19日晚7:00,优客源创会西安站在西安邮电大学长安校区东区教学楼FF305如期举行,西安邮电大学计算机学院教授.西邮Linux兴趣小组指导老师陈莉君.王小银老师和来自开源中国的周凯先生 ...

  2. 力扣 - 剑指 Offer 59 - I. 滑动窗口的最大值

    题目 剑指 Offer 59 - I. 滑动窗口的最大值 思路1(单调队列) 使用单调(递减)队列,保持队列中的元素是递减顺序,队列头保存的是当前窗口中最大的元素 首先先模拟建立第一个窗口,同时获取第 ...

  3. js 实现边缘撞击检测动画

    js 实现边缘撞击检测动画 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  4. 『学了就忘』Linux基础命令 — 37、Linux中挂载操作的相关命令

    目录 1.mount命令介绍 (1)mount命令说明 (2)mount命令格式 2.mount命令示例 3.mount -a命令说明 4.-o特殊选项说明 5.exec/noexec选项说明 挂载就 ...

  5. 寒武纪加速平台(MLU200系列) 摸鱼指南(二)--- 模型移植-环境搭建

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  6. DataGrid首次进入页面时,不加载任何数据[转]

    首次不加载数据问题,必须搞明白如何才能不加载数据.根据Easu UI的官方API: http://www.jeasyui.com/documentation/ 仔细观察DataGrid的事件当中有一个 ...

  7. mabatis的mapper文件找不到-ssm升级maven常见问题

    手里项目之前是普通ssm的,打算用业余时间升级一把. 1.首先,搭建好maven的ssm项目. 2.配置好jdk,tomcat环境,先启动. 3.启动没问题后将maven目录结构布置好后直接将原有项目 ...

  8. jmeter链接数据库,信息全部填写正确,运行之后没有结果

    之前遇到一个很苦恼的问题,jmeter链接数据库,数据库填写的资料全部都没有问题,在其他电脑jmeter上都可以正常链接,但是在我的电脑上运行却总是不出结果, 用mysql链接数据库也一切正常,一直找 ...

  9. 深入理解Redis 数据结构—双链表

    在 Redis 数据类型中的列表list,对数据的添加和删除常用的命令有 lpush,rpush,lpop,rpop,其中 l 表示在左侧,r 表示在右侧,可以在左右两侧做添加和删除操作,说明这是一个 ...

  10. Codeforces 923E - Perpetual Subtraction(微积分+生成函数+推式子+二项式反演+NTT)

    Codeforces 题目传送门 & 洛谷题目传送门 神仙题 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 首先考虑最朴素的 \(dp\),设 \(dp_{z,i}\) 表示经 ...