期末两框架总结知识点

期末题

usebean   get、set property 属性以及含义

 

JSTL核心标签,子标签库

 

 

 

 

对象-关系映射   ORM object-relational mapping

 

ORM思想

让实体类和表一一对应(类和表对应,类里面的属性和表字段对应)。使用配置文件方式完成。不需要操作表,而是操作表对应的实体类

 

实体类对象。hibernate封装的对象session。

 

hibernate基于持久化层和数据访问层

 

hibernate框架的优点

优点:

1: hibernate是基于ORM技术的开源的框架,对JDBC进行了轻量级的封装,使用面向对象的思维来操纵数据库。

2:hibernate提供了session缓存和二级缓存,对于不需要进行复杂查询的系统,性能有提升。 (session缓存是一级缓存)

3:低侵入式设计

缺点:

1:hibernate学习成本太高。

2:不适合有复杂的sql查询(统计) 。

3:不适合大量的聚集操作,(存储过程)

 

主键生成方式(标识符)

 

increment  采用 Hibernate 数值递增的方式;

identity 采用数据库提供的自增长方式;

assigned 主键由应用逻辑产生;

sequence 采用数据库提供的序列方式;

native 自动选择合适的标识符生成器;

/*

uuid.hex 通过uuid算法。

hilo 通过hi/lo算法   // Hibernate 5.0 以后不支持;

seqhilo 通过hi/lo算法;

*/

 

对象标识符全称

OID 全称是 Object Identifier,又叫做对象标识符

 

inverse属性

inverse 是 Hibernate 中双向关联关系中的基本概念,用来设置关系由哪一方来维护。

inverse=true 表示被控方

casscade级联属性四个值:all none delect save-update

 

获取session对象的两种方式,以及他们之间的区别

(1)openSession:无需配置在代码中可以直接使用。

  1. getCurrentSession:如果使用getCurrentSession获取session对象需在hibernate.cfg.xml中进行配置

 

它们之间的区别

(1)getCurrentSession在事物提交或者回滚之后会自动关闭,openSession需要你手动关闭,如果使用openSession没有手动关闭,很有可能会导致连接池异常,导致程序出现异常。

(2)openSession每次创建一个新的session对象而getCurrentSession则使用现有的session对象

 

实体对象的生命周期(四种状态)

 

Transient(临时状态):刚刚被 new 关键字创建,还没有被持久化,不在Session的缓存中。

Persistent(持久化状态):已经被持久化,并加入到 Session 缓存中。

Detached(游离状态):已经被持久化,但不再处于 Session 缓存中。

Removed(删除状态):Session 已经计划将其从数据库删除,并且不再处于 Session 缓存中。

 

qurey接口的方法

1.setter方法

2.函数list()用于执行查询语句,查询结果以集合返回

3.iterator()方法,用于执行查询语句,返回的结果是一个Integer,在读取是只能按照顺序方式读取

4.uniqueResult()方法   用与返回唯一的结果

5.executeUpdate()方法,是Hibernate3的新特性,可以更新和删除操作

6.setFirstResult()和setMaxResult()方法结合使用,来实现分页功能

 

hibernate内置检索方式,主要三种方法:

1.HQL(Hibernate Query Language)查询:提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式

2.QBC(Query By Criteria)查询:Criteria对象提供了一种面向对象的方式查询数据库。Criteria对象需要使用Session对象来获得一个Criteria对象表示对一个持久化类的查询。

3.SQL查询。

 

类级别检索策略

1. 立即检索 get:就好像他的名字,他会直接发送sql预计进行查询

2:延迟检索 load:需要时才进行查询

 

关联级别的检索策略

order.getCustomer().getName()

fetch=FetchType.EAGER立即抓取(显式)

fetch=FetchType.LAZY延迟抓取(默认)

fetch = join时,采取迫切左外连接查询(lazy不管取什么值都失效,就是取默认值为false。)

fetch=select时,生成多条简单sql查询语句(fetch=subselect时,生成子查询)

lazy=false:立即检索

lazy=true:延迟检索

lazy=extra:加强延迟检索,非常懒惰,比延迟检索更加延迟

 

Hibernate连接类型

(左连接,迫切左连接,内连接,迫切内连接,外连接,右外连接)PS:左连接=左外连接

迫切链接查询只有两种:迫切内连接,和左外连接查询
使用迫切链接查询可以提高查询效率,一条sql语句就都查询出来了,而普通内连接查询要用多个sql语句查询(使用才查出来,不使用不查询).迫切内连接查询,使用一个sql语句查询出所有的内容(使不使用都查询)

 

 

hibernate核心配置文件,配置五条加上mapping元素,中间可选项不用配置

 

1.<!-- 连接数据库的信息 -->     

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

2.<!-- mysql驱动信息 -->

<property name="hibernate.connection.url">jdbc:mysql:localhost:3306/dbname</property>

3.<!-- mysql数据库用户名 -->

<property name="hibernate.connection.username">username</property>

4.<!-- mysql数据库密码 -->

<property name="hibernate.connection.password">root</property>

5.<!-- 数据库的方言:根据底层的数据库生成不同的SQL -->

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

6.<!-- 映射文件的引入 -->

<mapping resource="com/heshihua/hibernate/demo1/Customer.hbm.xml"></mapping>

/*<mapping class="com.heshihua.hibernate.demo1.Customer.hbm.xml"></mapping>*/

 

 

spring框架七大主要模块

 

  1. Spring Core核心容器,它实现了IOC模式,提供了Spring框架的基础功能。
  2. Spring Context应用上下文模块继承Bean Factory(或者说Spring核心)类,并且添加了事件处理、国际化、资源装载、透明装载、以及数据校验等功能。它还提供了框架式的Bean的访问方式和很多企业级的功能
  3. Spring AOP面向切面编程集成了所有AOP功能。通过事务管理可以使任意Spring管理的对象AOP化。
  4. Spring DAOJDBC和DAO模块模式思想是将业务逻辑代码与数据库交互代码分离,降低两者耦合。通过DAO模式可以使结构变得更为清晰,代码更为简洁。
  5. Spring ORM对象实体映射模块提供了对现有ORM框架的支持,它对Hibernate提供了完美的整合功能,同时也支持其他ORM工具。
  6. Spring Web 模块建立在Spring Context基础之上,它提供了Servlet监听器的Context和Web应用的上下文。对现有的Web框架提供了集成。
  7. Spring Web MVC模块建立在Spring核心功能之上,这使它能拥有Spring框架的所有特性,能够适应多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑的清晰分离。

 

IoC和DI(控制反转和依赖注入两种方式)

 

控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。

 

依赖注入:组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造子注入(Constructor Injection)

 

区别:

控制反转:创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。

依赖注入:创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。

 

AOP中英文全称

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程

AOP原理

第一、将复杂的需求分解出不同的方面,将公共功能集中解决。

第二、采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能

 

 

五种通知类型和通知类型实现的接口

 

前置通知(Before advice)MethodBeforeAdvice:在某连接点之前执行的通知

后置通知(After returning advice) AfterReturningAdvice:在某连接点正常完成后执行的通知

异常通知(After throwing advice) ThrowsAdvice:在方法抛出异常退出时执行的通知

最终通知(After finally advice):当某连接点退出的时候执行的通知(不管是否有异常)

环绕通知(Around advice) MethodInterceptor:包围一个连接点的通知,这是最强大的一种通知类型

 

对事物的描述:

事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元);

 

事务的四大特性:

1 、原子性

事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

2 、一致性

事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。

3 、隔离性

一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

4 、持续性

也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。

 

spring对事物的支持

 

spring提供了三个接口对事务进行管理,然后提供了实现类对不同的持久层框架进行支持。

三个接口分别是:

1.TransactionDefinition:定义了事务的属性。

2.TransactionStatus:描述事务具体的运行状态,继承了SavepointManager接口

3.PlatFormTransactionManager: 事务管理器

 

Spring框架提供了编程式事务管理和声明式事务管理

编程式事务管理:

可以清楚地控制事务的边界

可自行实现事务开始时间、结束时间、撤消操作的时机等

可以实现细粒度的事务控制

声明式事务管理

好处是事务管理的API不介入程序,最符合一个非侵入型轻量级容器的理想多数情况下事务不需要细粒度控制,因此建议使用

 

 

//

 

查询方法结果集     分页查询方法

 

在IOC里怎么配置AOP

 

springJDBC

代理模式和工程模式

 

核心类 RowMapper  还有批量操作

 

https://blog.csdn.net/qq_44543508/article/details/102651841

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值