Java 面试题大全(三) 之 Spring

Java 面试题 - Spring

目录

1、什么是 spring?

Spring 是个 java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用,
但是有些扩展是针对构建 J2EE 平台的 web 应用。Spring 框架目标是简化 Java
企业级应用开发,并通过 POJO 为基础的编程模型促进良好的编程习惯。

2、使用 Spring 框架的好处是什么?

轻量:Spring 是轻量的,基本的版本大约 2MB。
 控制反转:Spring 通过控制反转实现了松散耦合,对象们给出它们的依
赖,而不是创建或查找依赖的对象们。
面向切面的编程(AOP):Spring 支持面向切面的编程,并且把应用业务
逻辑和系统服务分开。
容器:Spring 包含并管理应用中对象的生命周期和配置。
MVC 框架:Spring 的 WEB 框架是个精心设计的框架,是 Web 框架的
一个很好的替代品。
事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地
事务下至全局事务(JTA)。
异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,
Hibernate or JDO 抛出的)转化为一致的 unchecked 异常。

3、Spring 由哪些模块组成?

以下是 Spring 框架的基本模块:
 Core module
 Bean module
 Context module
 Expression Language module
 JDBC module
 ORM module
 OXM module
 Java Messaging Service(JMS) module
 Transaction module
 Web module
 Web-Servlet module
 Web-Struts module
 Web-Portlet module

4、什么是 Spring IOC 容器?

Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对
象,并且管理这些对象的整个生命周期。

5、IOC 的优点是什么?

IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需
要单例和 JNDI 查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC
容器支持加载服务时的饿汉式初始化和懒加载。

6、核心容器(应用上下文) 模块。

这是基本的 Spring 模块,提供 spring 框架的基础功能,BeanFactory 是 任何
以 spring 为基础的应用的核心。Spring 框架建立在此模块之上,它使 Spring 成
为一个容器。

7、一个 Spring 的应用看起来象什么?

 一个定义了一些功能的接口。
 这实现包括属性,它的 Setter , getter 方法和函数等。
 Spring AOP。  Spring 的 XML 配置文件。
 使用以上功能的客户端程序。
依赖注入

8、什么是 Spring 的依赖注入?

依赖注入,是 IOC 的一个方面,是个通常的概念,它有多种解释。这概念是说你
不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和
服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC 容
器)负责把他们组装起来。

9、解释 Spring 支持的几种 bean 的作用域。

Spring 框架支持以下五种 bean 的作用域:
 singleton : bean 在每个 Spring ioc 容器中只有一个实例。
 prototype:一个 bean 的定义可以有多个实例。
 request:每次 http 请求都会创建一个 bean,该作用域仅在基于 web 的 Spring ApplicationContext 情形下有效。
 session:在一个 HTTP Session 中,一个 bean 定义对应一个实例。该
作用域仅在基于 web 的 Spring ApplicationContext 情形下有效。
 global-session:在一个全局的 HTTP Session 中,一个 bean 定义对应
一个实例。该作用域仅在基于 web 的 Spring ApplicationContext 情形下有效。
缺省的 Spring bean 的作用域是 Singleton.

10、Spring 框架中的单例 bean 是线程安全的吗?

 不,Spring 框架中的单例 bean 不是线程安全的。

11、解释 Spring 框架中 bean 的生命周期。

 Spring 容器 从 XML 文件中读取 bean 的定义,并实例化 bean。
 Spring 根据 bean 的定义填充所有的属性。
 如果 bean 实现了 BeanNameAware 接口,Spring 传递 bean 的 ID 到
setBeanName 方法。
 如果 Bean 实现了 BeanFactoryAware 接口, Spring 传递
beanfactory 给 setBeanFactory 方法。
 如果有任何与 bean 相关联的 BeanPostProcessors,Spring 会在
postProcesserBeforeInitialization()方法内调用它们。
 如果 bean 实现 IntializingBean 了,调用它的 afterPropertySet 方法,
如果 bean 声明了初始化方法,调用此初始化方法。
 如果有 BeanPostProcessors 和 bean 关联,这些 bean 的
postProcessAfterInitialization() 方法将被调用。
 如果 bean 实现了 DisposableBean,它将调用 destroy()方法。

12、什么是 Spring Framework?

Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。它是轻量级、松
散耦合的。它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序
开发提供了一个有凝聚力的框架。它可以集成其他框架,如 Structs、Hibernate、
EJB 等,所以又称为框架的框架。

13、列举 Spring Framework 的优点。

由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。
Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持续集
成和可测试性。由于依赖注入和控制反转,JDBC 得以简化。它是开源免费的。

14、Spring Framework 有哪些不同的功能?

轻量级 - Spring 在代码量和透明度方面都很轻便。IOC - 控制反转 AOP - 面向
切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚。容器 - Spring 负
责创建和管理对象(Bean)的生命周期和配置。MVC - 对 web 应用提供了高
度可配置性,其他框架的集成也十分方便。事务管理 - 提供了用于事务管理的通
用抽象层。Spring 的事务支持也可用于容器较少的环境。JDBC 异常 - Spring
的 JDBC 抽象层提供了一个异常层次结构,简化了错误处理策略。

15、Spring Framework 中有多少个模块,它们分别是什么?

在这里插入图片描述
Spring 核心容器 – 该层基本上是 Spring Framework 的核心。它包含以下模
块:
 Spring Core
 Spring Bean
 SpEL (Spring Expression Language)
 Spring Context
数据访问/集成 – 该层提供与数据库交互的支持。它包含以下模块:
 JDBC (Java DataBase Connectivity)
 ORM (Object Relational Mapping)
 OXM (Object XML Mappers)
 JMS (Java Messaging Service)
 Transaction
Web – 该层提供了创建 Web 应用程序的支持。它包含以下模块:
 Web
 Web – Servlet
 Web – Socket
 Web – Portlet
AOP
 该层支持面向切面编程
Instrumentation
 该层为类检测和类加载器实现提供支持。
Test
 该层为使用 JUnit 和 TestNG 进行测试提供支持。
几个杂项模块:
Messaging – 该模块为 STOMP 提供支持。它还支持注解编程模型,该模型用
于从 WebSocket 客户端路由和处理 STOMP 消息。
Aspects – 该模块为与 AspectJ 的集成提供支持。

16、什么是 Spring 配置文件?

Spring 配置文件是 XML 文件。该文件主要包含类信息。它描述了这些类是如何
配置以及相互引入的。但是,XML 配置文件冗长且更加干净。如果没有正确规划
和编写,那么在大项目中管理变得非常困难。

17、Spring 应用程序有哪些不同组件?

Spring 应用一般有以下组件:
 接口 - 定义功能。
 Bean 类 - 它包含属性,setter 和 getter 方法,函数等。
 Spring 面向切面编程(AOP) - 提供面向切面编程的功能。
 Bean 配置文件 - 包含类的信息以及如何配置它们。
 用户程序 - 它使用接口。

18、使用 Spring 有哪些方式?

使用 Spring 有以下方式:
 作为一个成熟的 Spring Web 应用程序。
 作为第三方 Web 框架,使用 Spring Frameworks 中间层。
 用于远程使用。
 作为企业级 Java Bean,它可以包装现有的 POJO(Plain Old JavaObjects)。

19、依赖注入(Ioc)

1、什么是 Spring IOC 容器?

Spring 框架的核心是 Spring 容器。容器创建对象,将它们装配在一起,配置它
们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的
组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指
令。该元数据可以通过 XML,Java 注解或 Java 代码提供。
在这里插入图片描述

2、什么是依赖注入?

在依赖注入中,您不必创建对象,但必须描述如何创建它们。您不是直接在代码
中将组件和服务连接在一起,而是描述配置文件中哪些组件需要哪些服务。由 IoC
容器将它们装配在一起。

3、可以通过多少种方式完成依赖注入?

通常,依赖注入可以通过三种方式完成,即:
 构造函数注入
 setter 注入
 接口注入
在 Spring Framework 中,仅使用构造函数和 setter 注入。

4、区分构造函数注入和 setter 注入。

构造函数注入setter 注入
没有部分注入有部分注入
不会覆盖 setter 属性会覆盖 setter 属性
任意修改都会创建一个新实例任意修改不会创建一个新实例
适用于设置很多属性适用于设置少量属性

5、spring 中有多少种 IOC 容器?

BeanFactory - BeanFactory 就像一个包含 bean 集合的工厂类。它会在客户端
要求时实例化 bean。
ApplicationContext - ApplicationContext 接口扩展了 BeanFactory 接口。它 在 BeanFactory 基础上提供了一些额外的功能

6、列举 IoC 的一些好处。

IoC 的一些好处是:
 它将最小化应用程序中的代码量。
 它将使您的应用程序易于测试,因为它不需要单元测试用例中的任何单例
或 JNDI 查找机制。
 它以最小的影响和最少的侵入机制促进松耦合。
 它支持即时的实例化和延迟加载服务。

7、Spring IoC 的实现机制。

Spring 中的 IoC 的实现原理就是工厂模式加反射机制。

示例:

interface Fruit {
public abstract void eat();
}
class Apple implements Fruit {
public void eat(){
System.out.println("Apple");
} }
class Orange implements Fruit {
public void eat(){
System.out.println("Orange");
} }
class Factory {
public static Fruit getInstance(String ClassName) {
Fruit f=null;
try {
f=(Fruit)Class.forName(ClassName).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return f;
} }
class Client {
public static void main(String[] a) {
Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple");
if(f!=null){
f.eat();
} } }

20、Beans

1、什么是 spring bean?  它们是构成用户应用程序主干的对象。

 Bean 由 Spring IoC 容器管理。
 它们由 Spring IoC 容器实例化,配置,装配和管理。
 Bean 是基于用户提供给容器的配置元数据创建。

2、spring 提供了哪些配置方式?

基于 xml 配置
bean 所需的依赖项和服务在 XML 格式的配置文件中指定。这些配置文件通常
包含许多 bean 定义和特定于应用程序的配置选项。它们通常以 bean 标签开
头。例如:

<bean id="studentbean" class="org.edureka.firstSpring.StudentBean">
<property name="name" value="Edureka"></property>
</bean>

基于注解配置
您可以通过在相关的类,方法或字段声明上使用注解,将 bean 配置为组件类本
身,而不是使用 XML 来描述 bean 装配。默认情况下,Spring 容器中未打开
注解装配。因此,您需要在使用它之前在 Spring 配置文件中启用它。例如:

<beans>
<context:annotation-config/>
<!-- bean definitions go here -->
</beans>

基于 Java API 配置
Spring 的 Java 配置是通过使用 @Bean 和 @Configuration 来实现。
1、 @Bean 注解扮演与 <bean/> 元素相同的角色。
2、 @Configuration 类允许通过简单地调用同一个类中的其他 @Bean 方法
来定义 bean 间依赖关系。

@Configuration
public class StudentConfig {
@Bean
public StudentBean myStudent() {
return new StudentBean();
} }

3、spring bean 容器的生命周期是什么样的?

spring bean 容器的生命周期流程如下:
1、Spring 容器根据配置中的 bean 定义中实例化 bean。
2、Spring 使用依赖注入填充所有属性,如 bean 中所定义的配置。
3、如果 bean 实现BeanNameAware 接口,则工厂通过传递 bean 的 ID 来调用setBeanName()。
4、如果 bean 实现 BeanFactoryAware 接口,工厂通过传递自身的实例来调用 setBeanFactory()。
5、如果存在与 bean 关联的任何BeanPostProcessors,则调用 preProcessBeforeInitialization() 方法。
6、如果为 bean 指定了 init 方法( <bean> 的 init-method 属性),那么将调用它。
7、最后,如果存在与 bean 关联的任何 BeanPostProcessors,则将调用 postProcessAfterInitialization() 法。
8、如果 bean 实现DisposableBean 接口,当 spring 容器关闭时,会调用 destory()。
9、如果为bean 指定了 destroy 方法( <bean> 的 destroy-method 属性),那么将调用它。

4、什么是 spring 装配

当 bean 在 Spring 容器中组合在一起时,它被称为装配或 bean 装配。Spring
容器需要知道需要什么 bean 以及容器应该如何使用依赖注入来将 bean 绑定
在一起,同时装配 bean。

21、注解

1、什么是基于注解的容器配置

不使用 XML 来描述 bean 装配,开发人员通过在相关的类,方法或字段声明上
使用注解将配置移动到组件类本身。它可以作为 XML 设置的替代方案。例如:
Spring 的 Java 配置是通过使用 @Bean 和 @Configuration 来实现。
@Bean 注解扮演与 元素相同的角色。 @Configuration 类允许通过简单地调
用同一个类中的其他 @Bean 方法来定义 bean 间依赖关系。
例如:
@Configuration
public class StudentConfig {
@Bean
public StudentBean myStudent() {
return new StudentBean();
} }

2、如何在 spring 中启动注解装配?

默认情况下,Spring 容器中未打开注解装配。因此,要使用基于注解装配,我们
必须通过配置 <context:annotation-config/> 元素在 Spring 配置文件
中启用它。

3、@Component, @Controller, @Repository,@Service 有何区别?

@Component :这将 java 类标记为 bean。它是任何 Spring 管理组件的通用构造型。spring 的组件扫描机制现在可以将其拾取并将其拉入应用程序环境中。
@Controller :这将一个类标记为 Spring Web MVC 控制器。标有它的Bean 会自动导入到 IoC 容器中。
@Service :此注解是组件注解的特化。它不会对 @Component 注解提供任何其他行为。您可以在服务层类中使用@Service 而不是 @Component,因为它以更好的方式指定了意图。
@Repository :这个注解是具有类似用途和功能的 @Component 注解的特化。它为 DAO 提供了额外的好处。它将 DAO 导入 IoC 容器,并使未经检查的异常有资格转换为 Spring DataAccessException。

4、@Required 注解有什么用?

@Required 应用于 bean 属性 setter 方法。此注解仅指示必须在配置时使用
bean 定义中的显式属性值或使用自动装配填充受影响的 bean 属性。如果尚未
填充受影响的 bean 属性,则容器将抛出 BeanInitializationException。
示例:

public class Employee {
private String name;
@Required
public void setName(String name){
this.name=name;
}
public string getName(){
return name;
} }

5、@Autowired 注解有什么用?

@Autowired 可以更准确地控制应该在何处以及如何进行自动装配。此注解用于
在 setter 方法,构造函数,具有任意名称或多个参数的属性或方法上自动装配
bean。默认情况下,它是类型驱动的注入。

public class Employee {
private String name;
@Autowired
public void setName(String name) {
this.name=name;
}
public string getName(){
return name;
} }

6、@Qualifier 注解有什么用?

当您创建多个相同类型的 bean 并希望仅使用属性装配其中一个 bean 时,您可
以使用@Qualifier 注解和 @Autowired 通过指定应该装配哪个确切的 bean
来消除歧义。
例如,这里我们分别有两个类,Employee 和 EmpAccount。在 EmpAccount
中,使用@Qualifier 指定了必须装配 id 为 emp1 的 bean。
Employee.java

public class Employee {
private String name;
@Autowired
public void setName(String name) {
this.name=name;
}
public string getName() 
return name;
} }

EmpAccount.java

public class EmpAccount {
private Employee emp;
@Autowired
@Qualifier(emp1)
public void showName() {
System.out.println(“Employee name :+emp.getName);
} }

7、@RequestMapping 注解有什么用?

@RequestMapping 注解用于将特定 HTTP 请求方法映射到将处理相应请求的
控制器中的特定类/方法。此注释可应用于两个级别:
类级别:映射请求的 URL 方法级别:映射 URL 以及 HTTP 请求方法

22、AOP

1、什么是 AOP?

AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与
OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与
OOP 不同的抽象软件结构的视角. 在 OOP 中, 我们以类(class)作为我们的基
本单元, 而 AOP 中的基本单元是 Aspect(切面)

2、什么是 Aspect?

aspect 由 pointcount 和 advice 组成, 它既包含了横切逻辑的定义, 也包
括了连接点的定义. Spring AOP 就是负责实施切面的框架, 它将切面所定义的横
切逻辑编织到切面所指定的连接点中. AOP 的工作重心在于如何将增强编织目标
对象的连接点上, 这里包含两个工作:
1、如何通过 pointcut 和 advice 定位到特定的 joinpoint 上
2、如何在advice 中编写切面代码.
可以简单地认为, 使用 @Aspect 注解的类就是切面.

3、什么是切点(JoinPoint)

程序运行中的一些时间点, 例如一个方法的执行, 或者是一个异常的处理. 在 Spring AOP 中, join point 总是方法的执行点。

4、什么是通知(Advice)?

特定 JoinPoint 处的 Aspect 所采取的动作称为 Advice。Spring AOP 使用一
个 Advice 作为拦截器,在 JoinPoint “周围”维护一系列的拦截器。

5、有哪些类型的通知(Advice)?

 Before - 这些类型的 Advice 在 joinpoint 方法之前执行,并使用
@Before 注解标记进行配置。
 After Returning - 这些类型的 Advice 在连接点方法正常执行后执
行,并使用@AfterReturning 注解标记进行配置。
 After Throwing - 这些类型的 Advice 仅在 joinpoint 方法通过抛出
异常退出并使用 @AfterThrowing 注解标记配置时执行。
 After (finally) - 这些类型的 Advice 在连接点方法之后执行,无论方
法退出是正常还是异常返回,并使用 @After 注解标记进行配置。
 Around - 这些类型的 Advice 在连接点之前和之后执行,并使用
@Around 注解标记进行配置。

6、AOP 有哪些实现方式?

实现 AOP 的技术,主要分为两大类:
静态代理
指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,
因此也称为编译时增强;
 编译时编织(特殊编译器实现)
 类加载时编织(特殊的类加载器实现)。
动态代理
在运行时在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。
 JDK 动态代理
 CGLIB

23、MVC

1、Spring MVC 框架有什么用?

Spring Web MVC 框架提供 模型-视图-控制器 架构和随时可用的组件,用于开
发灵活且松散耦合的 Web 应用程序。MVC 模式有助于分离应用程序的不同方
面,如输入逻辑,业务逻辑和 UI 逻辑,同时在所有这些元素之间提供松散耦合。

2、描述一下 DispatcherServlet 的工作流程

DispatcherServlet 的工作流程可以用一幅图来说明:
在这里插入图片描述
1、向服务器发送 HTTP 请求,请求被前端控制器 DispatcherServlet 捕获。
2、 DispatcherServlet 根据 -servlet.xml 中的配置对请求的 URL 进行解
析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping
获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对
象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回。
3、 DispatcherServlet 根据获得的 Handler,选择一个合适的
HandlerAdapter。(附注:如果成功获得 HandlerAdapter 后,此时将开始
执行拦截器的 preHandler(…)方法)。
4、提取 Request 中的模型数据,填充 Handler 入参,开始执行 Handler
( Controller)。在填充 Handler 的入参过程中,根据你的配置,Spring 将
帮你做一些额外的工作:
 HttpMessageConveter:将请求消息(如 Json、xml 等数据)转换
成一个对象,将对象转换为指定的响应信息。
 数据转换:对请求消息进行数据转换。如 String 转换成 Integer、
Double 等。
 数据根式化:对请求消息进行数据格式化。如将字符串转换成格式化数字
或格式化日期等。
 数据验证:验证数据的有效性(长度、格式等),验证结果存储到
BindingResult 或 Error 中。
5、Handler(Controller)执行完成后,向 DispatcherServlet 返回一个
ModelAndView 对象;
6、根据返回的 ModelAndView,选择一个适合的 ViewResolver(必须是已
经注册到 Spring 容器中的 ViewResolver)返回给 DispatcherServlet。
7、 ViewResolver 结合 Model 和 View,来渲染视图。
8、视图负责将渲染结果返回给客户端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
spring 的优点? 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等 7.spring属于低侵入式设计,代码的污染极低 8.独立于各种应用服务器 9.spring的DI机制降低了业务对象替换的复杂性 10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部 什么是DI机制? 依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色 需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中 创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者 因此也称为依赖注入。 spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP? 面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面 1.面向切面编程提供声明式事务管理 2.spring支持用户自定义的切面 面向切面编程(aop)是对面向对象编程(oop)的补充, 面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。 AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象, 是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。 aop框架具有的两个特征: 1.各个步骤之间的良好隔离性 2.源代码无关性 Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2. Hibernate是如何延迟加载? 1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection) 2. Hibernate3 提供了属性的延迟加载功能 当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、 4. 说下Hibernate的缓存机制 1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存 2. 二级缓存: a) 应用及缓存 b) 分布式缓存 条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c) 第三方缓存的实现 5. Hibernate的查询方式 Sql、Criteria,object comptosition Hql: 1、 属性查询 2、 参数查询、命名参数查询 3、 关联查询 4、 分页查询 5、 统计函数 6. 如何优化Hibernate? 1.使用双向一对多关联,不使用单向一对多 2.灵活使用单向一对多关联 3.不用一对一,用多对一取代 4.配置对象缓存,不使用集合缓存 5.一对多集合使用Bag,多对多集合使用Set 6. 继承类使用显式多态 7. 表字段要少,表关联不要

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值