第58期Java基础:hibernate数据回顾

 2024-02-06 05:02:46  阅读 0

1. 数据的三种状态

1) state(临时状态):当一个新对象被创建时,它处于一个状态(如果程序运行完毕,该对象将被垃圾回收)。

2)持久状态:与之相关的是持久状态。 对持久态对象的任何修改都会影响数据库中相应的数据。

3)托管状态(自由状态):当对象不再受管理时,就脱离了管理,处于托管状态的对象的属性不会对数据库数据产生任何影响。

企业开发中,使用(obj):来替代save(obj)或(obj)方法

避免状态变化导致的方法错误,(obj)

可以根据obj的状态选择是save()还是()

2.load和get的区别

如果数据库中没有对象,如果通过get方法加载,会返回Null; 如果通过Load加载,会返回一个代理对象。 如果以下代码调用用户对象的属性,则会抛出一个离子。

Load支持延迟加载,但get不支持。

三、工作原理

1)类读取并解析.cfg.xml配置文件

2)读取解析映射信息并创建

3)打开

4)创建交易

5)持久化操作

6) 提交交易

8) 关闭

9) 整个应用程序停止并关闭

4. 优点和缺点

优势:

1)对jdbc访问数据库的代码进行了封装,大大简化了数据访问层繁琐重复的代码。

2)是基于JDBC的主流持久化框架,也是优秀的ORM实现。 它极大地简化了DAO的编码工作,使程序更加面向对象,提高了开发效率。

3)程序更加面向对象,提高开发效率

4)提高生产力,无需编写SQL语句

5)采用hql,支持方言配置,方便数据库移植。

6)它是一个轻量级框架,对代码无侵入。

缺点:

1)效率比JDBC稍低

2)不适合批量操作

3)表的操作不够灵活

5. 延迟加载

里面有一些查询方法。 查询时,并不会立即访问数据库查询数据,而是返回一个空对象。 这个对象不为null,而是一个通过new传递过来的对象。 然而,除了ID属性外,对象中的其他属性都是空的。 当程序使用该对象时,实际上会发送语句来查询数据库,并将返回的数据填充到该对象的属性值中。 这种延迟查询形成的机制称为延迟加载。

为什么要使用延迟加载:

1)由于推迟期间没有数据加载,因此可以节省内存空间,提高内存利用率。

2)如果对象被查询而没有被使用,那么延迟加载的对象根本不访问数据库,这样可以减少数据被访问的次数。

如何使用延迟加载

1)里面有一些方法自动支持延迟加载,只要调用就可以使用。

2)采用延迟加载的方法如下:

。加载();

询问。();

关联映射属性加载,属性名称为懒加载,如果查询不存在懒加载,会抛出异常

6. 优化

使用双向一对多关联而不是单向一对多关联

灵活运用单向一对多

不使用一对一,而是使用多对一

配置对象缓存,集合缓存不适用

一对多收集使用bag,多对多收集使用set。

继承类使用显式多态性

表字段要少一些,不要怕表关联太多,要有二级缓存。

7.什么是ORM?

ORM是对象关系映射,类->表,属性->表中的列,对象->表中的每一条数据,

它是一种解决面向对象数据库与关系数据库不匹配的技术。

优点:让我们的编程思维更加面向对象,无需考虑关系数据库

8、主键生成策略

1)、通知框架使用指定的顺序生成主键的值,然后插入到数据库中。 它主要用于

,DB2,无需程序员参与

	 
	 foo_seq// 必须加上
	  

2)通知框架主键值采用数据库的自动增长机制。 每次执行save()操作时,都会根据(数据库)自增的方法生成一个id值,无需程序员参与。 它主要用于

mysql,

	  

3)uuid(西方常用),每次执行save()操作时,都会随机生成一个32位不重复的字符串。 程序员不需要参与维护。 PO 类的 Id 属性必须是

4)根据方言的不同,有自动选择或智能选择。企业常用

5)不推荐。 程序语言需要自己维护主键的Id值。 当数据量很大时,维护起来很困难。

9. 级联操作

1)操作

all:在所有情况下执行调平操作,保存并

save-:执行save()/()/时进行调平操作

:一边进行调平操作一边继续

all--:适合集合中删除,对返回的集合进行()操作

none:任何情况下都不进行调平操作

2)属性的作用

是否放弃维护关联关系 true 放弃 false 不放弃

10. 核心接口

接口:配置,根据该配置启动并创建对象;

接口:初始化,充当数据存储源的代理,创建对象,是线程安全的,意味着它的同一个实例可以被应用程序的多个线程共享,是重量级的二级缓存;

接口:负责对象的保存、更新、删除、加载和查询。 它是线程不安全的,可以防止多个线程共享同一个线程。 它是一个轻量级的一级缓存;

接口:管理交易;

查询和接口:执行数据库查询。

11、查询方法

主键查找:.get() 或 load()

hql 查询: .("hql")

SQL 查询:.("sql")

查询(QBC):.()

读取文件内容忽略井号开始的行_c 读取xml文件内容_读取文件内容的首要方法是

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码