×

首页>讲师原创专区

教师图片

徐老师老师

4文章总数

11994总阅读数

查看Ta的文章>>

hibernate02实体类状态和数据库基础操作

发布于:2018年11月05日 浏览:3259次 0

一、实体类编写规则

封装属性

私有化属性

属性提供对应的getset方法

要求实体类中有一个属性作为位置值使用(一般使用id值)

不建议属性使用基本数据类型,建议使用引用数据类型

学生分数举例

二、hibernate主键生成策略

要求实体中有一个属性为唯一值,对应数据库中的主键

主键生成策略有多种值

native 主键自增长

uuid uuid作为主键部署策略

如果使用uuid生成策略,那么类中代表id属性的值必须是String

三、实体类中的操作

3.1对实体类crud的操作

添加操作 save(写id无影响)

根据id进行查询

调用session里面的get方法 get(实体类的class,id);

修改操作

先查询,再修改(推荐,避免丢数据)

update(对象名)

删除操作

delete(对象名)

3.2实体类的三种状态

瞬时态

对象里面没有id值,对象与session没有关联

持久态

对象里有id值,对象与session也有关联

托管态

对象里面有id值,对象与session没有关联

saveOrUpdate方法

能添加,也能修改

瞬时态,添加操作

持久态,修改操作

托管态,修改操作

四、hibernate一级缓存

4.1什么是缓存

数据存在数据库中,数据库本身是文件系统,使用流方式操作文件效率不高

可以将数据存储到内存中,不需要使用流方法,就可以直接读取内存中的数据

把数据放到内存中,提高读取效率

4.2hibernate缓存

hibernate提供缓存机制

特点

hibernate一级缓存

默认开启

一级缓存使用范围,是session范围,从session创建到session关闭的范围

一级缓存中,存储数据是持久态数据

验证方法,多次查询相同数据

hibernate二级缓存

目前已经不使用,替代技术redis

默认关闭

使用范围是整个项目

执行过程

打开session后开启一级缓存,每次查询操作前先去缓存中查看,如果存在相同数据,直接获取

特性

持久态会自动更新数据库

执行过程

只修改一级缓存内容,不修改快照区内容

在提交事务时,会比较一级缓存和快照区内容,如果不相同,把一级缓存内容更新到数据库中

五、事务操作

5.1事务代码规范写法


六、hibernate其他的api

查询所有记录

6.1Query

不需要写sql语句,但是写hql语句

hql:hibernate query languagehibernate提供的查询语言,与普通语句很相似

hqlsql的区别

sql操作的是表和字段

hql操作实体类和属性

Query对象的使用

创建一个Query对象

调用Query对象中的方法,得到结果

CreateQuery

list


6.2Criteria

使用这个对象查询操作,不需要写语句

实现过程

创建Criteria对象

createCriteria

调用方法

list


6.3SQLQuery

使用hibernate,调用底层sql语句进行实现

实现过程

创建SQLQuery对象

createSQLQuery

list默认返回的是数组

sqlQuery.addEntity(User.class)

调用方法



本周热文

推荐专题

专栏图标 专栏图标 专栏图标 专栏图标 专栏图标 专栏图标

我赢职场APP
扫码立即下载

  • 微信图标官方公众号
    二维码扫描二维码
    关注东方瑞通官方公众号
    小图标
  • 微信图标PMP公众号
    二维码扫描二维码
    关注东方瑞通PMP公众号
    小图标
  • 微信图标客服小瑞
    二维码扫描二维码
    添加东方瑞通客服小瑞
    小图标
  • QQ图标国际认证考试群 加入

PMI, PMP, Project Management Professional, CAPM, PgMP, PfMP, PMI-ACP, PMI-RMP, PMI-SP, PMI-PBA and PMBOK are registered marks of the Project Management Institute, Inc.

ITIL® is a registered trade mark of AXELOS Limited, used under permission of AXELOS Limited. All rights reserved.

PRINCE2® is a registered trade mark of AXELOS Limited, used under permission of AXELOS Limited. All rights reserved.

Copyright © 2006-2019 东方瑞通(北京)咨询服务有限公司版权所有

京ICP备 13009094号 京公网安备 11010802014211号