码迷,mamicode.com
首页 > Web开发 > 详细

1、Hibernate基础

时间:2015-12-06 21:07:46      阅读:402      评论:0      收藏:0      [点我收藏+]

标签:

1.1hibernate快速预览

Hibernate是目前非常流行的ORM框架,Object Relation Model,通过ORM框架我们可以仅仅只用对对象进行操作就可以轻松的实现对数据库的操作。3.6.8

入门:

1、导入Hibernate的jar包

   -hibernate-->lib-->required

   -hibernate-->hiberate.jar

  -hibernate-->lib-->jpa

   -log4j

   -mysql-connector

2、创建相应的业务对象(User)

3、创建Hibernate的配置文件

   -src-->hibernate.cfg.xml,在这个配置文件中进行相应的数据库连接设定

技术分享

4、为相应的业务对象创建hbm的配置文件,在这个文件中说明与数据库的映射关系,如果为User对象创建就在User对象所在的包中创建一个User.hbm.xml文件

技术分享

5、将hbm文件加入到cfg文件中

技术分享

6、写代码

技术分享

7、为了方便查询相应的SQL语句,需要将log4j.properties拷贝到项目


1.2、使用Hibernate实现 CRUD

1、编写同一个HibernateUtil在这个类中统一创建单例的SessionFactory和Session

技术分享

2、编写添加方法

技术分享

3、编写Update方法

技术分享

4、编写load方法

技术分享

5、编写delete方法

技术分享

6、编写list方法

技术分享

1.3hibernate的状态

1、Transient(瞬时状态)

    即没有ID,也没有被Session 管理
技术分享

2、Persistent(持久化状态)

   当执行了save,update等操作之后,这个对象就会被session所管理,被管理之后就称为Persistent

  持久化状态的对象是有id的

技术分享

技术分享

3、Detached(离线状态)

   有ID,但是没有被session所管理,(session关闭,创建一个对象,设置了相应id)

技术分享

技术分享

4、对象状态的转换

技术分享

5、几种特殊情况

5.1、如果对离线对象进行save操作,不会执行update而会直接insert、 技术分享

5.2、对应瞬时对象而言,如果执行update会抛出异常(id找不到)

技术分享

5.3、saveOrUpdate

技术分享

特别注意:saveOrUpdate这个方法一般不会使用,因为我们在开发过程中是完全控制着数据对象状态

5.4、一个session中只能存在一份id相同的持久化状态对象

技术分享

技术分享


1.4、延迟加载

要获取一个对象有两种方法:get和load

  ·对于get方法而言不支持延迟加载(LazyLoad(懒加载))

技术分享

  ·对于load而言支持延迟加载,延迟加载指的是执行了load之后,并不会直接发出sql语句去数据库取数据,只有在使用了这个对象的非id属性之后才会调用sql去数据库取数据,这是一种优化的策略

技术分享

技术分享

·使用load可能会出现的问题

技术分享

·一些特殊情况

get的特殊情况

技术分享

load的特殊情况

技术分享

技术分享

技术分享

可以通过设置hbm文件取消延迟加载(一般不会这样做)

技术分享

1.5ID生成策略

id是每一个对象必须有的标识,一般情况都是用一个没有任何语义的字段作为id

技术分享

generator表示可以设置id的生成策略,对应mysql而言:auto_increment,对于oracle而言:是使用sequence来生成自动递增序列的

native表示会自动根据数据库进行选择,如果是mysql就选择auto_increment,如果是oracle就选择sequence

对于native而言id必须是int类型

技术分享

还有另外一种生成策略:uuid(如果使用uuid主键必须是varchar类型)

技术分享

可以设置生成策略为assigned,assigned表示主键由用户自己指定(不经常用)

技术分享

1、Hibernate基础

标签:

原文地址:http://www.cnblogs.com/lvjun2015/p/5024263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!