### SSH框架面试题详解 #### 一、Hibernate工作原理及为何使用 **1.1 Hibernate工作原理** - **读取并解析配置文件**: Hibernate启动时首先读取`hibernate.cfg.xml`配置文件,该文件定义了Hibernate连接数据库的方式、使用的方言(Dialect)等基本信息。 - **读取并解析映射信息,创建SessionFactory**: 根据`*.hbm.xml`或注解定义的映射关系,创建`SessionFactory`实例。`SessionFactory`是线程安全的,整个系统中只需要一个即可。 - **打开Session**: `SessionFactory`负责打开和关闭`Session`。`Session`是非线程安全的,通常每个业务操作都需要一个新的`Session`。 - **创建事务Transaction**: 在进行数据库操作之前,需要通过`Session`开启事务。 - **持久化操作**: 通过`Session`执行增删改查等操作。Hibernate提供了丰富的API,支持多种方式的数据库操作。 - **提交事务**: 当数据操作完成后,需要提交事务以确保数据的完整性和一致性。 - **关闭Session**: 完成所有操作后,应关闭`Session`以释放资源。 - **关闭SessionFactory**: 应用程序结束时关闭`SessionFactory`。 **1.2 为什么使用Hibernate** - **封装JDBC**: Hibernate对JDBC访问数据库的代码进行了封装,简化了数据访问层的繁琐操作。 - **ORM实现**: Hibernate是一种优秀的ORM(Object-Relational Mapping)框架,它将对象模型与关系模型之间进行转换,减少了DAO层的编码工作。 - **透明性**: Hibernate使用Java反射机制而非字节码增强来实现透明性,使得开发更加简单。 - **高性能**: Hibernate是一个轻量级框架,具有出色的映射灵活性和支持多种数据库类型的能力,从而提高了应用的性能。 #### 二、Hibernate如何实现延迟加载 **2.1 原理** - **Hibernate2**: 支持实体对象和集合的延迟加载。当查询数据时,实际的数据并不立即加载到内存中,而是在真正需要时才加载。 - **Hibernate3及以上版本**: 添加了属性级别的延迟加载能力。 **2.2 实现机制** - **懒加载(Lazy Loading)**: 通过配置文件或注解指定为lazy模式,Hibernate仅在访问关联实体时才会加载相关数据。 - **代理模式(Proxy Pattern)**: Hibernate使用代理模式来实现延迟加载。例如,当查询一个对象时,如果关联对象设置了lazy加载,则返回的关联对象实际上是代理对象。只有当真正访问关联对象时,Hibernate才会加载真实的数据。 #### 三、Hibernate中如何实现类之间的关系 - **一对多**: 可以通过`@OneToMany`或`<set>`标签来实现。父类通过子类的集合来表示一对多的关系。 - **多对多**: 使用`@ManyToMany`或`<set>`标签,通过中间表来维护多个实体之间的关联关系。 #### 四、Struts1工作流程 **4.1 工作流程** 1. **客户端发送HTTP请求**。 2. **ActionServlet接收请求**,根据`web.xml`配置。 3. **参数填充**: 根据`struts-config.xml`配置,将请求参数填充到`ActionForm`对象中。 4. **验证**: 调用`ActionForm`的`validate()`方法进行验证。 5. **业务逻辑处理**: 通过`Action`对象调用JavaBean的业务方法。 6. **结果返回**: `Action`返回`ActionForward`对象,决定下一步跳转。 7. **响应客户端**。 **4.2 MVC设计模式** - **Model(模型)**: 业务逻辑层,如JavaBean。 - **View(视图)**: 显示层,如JSP。 - **Controller(控制器)**: 控制层,如Servlet。 #### 五、Struts简介 - **Struts1**: 基于JSP和Servlet的MVC框架。 - **Struts2**: 基于WebWork技术的新框架,与Struts1无直接联系。 #### 六、Spring框架简介 - **核心特性**: 依赖注入(IOC)和面向切面编程(AOP)。 - **IOC**: 容器管理对象生命周期和依赖关系。 - **AOP**: 提供横切关注点的实现,如日志记录、事务管理等。 #### 七、Hibernate简介 - **基于ORM**: 对象关系映射,将对象模型映射到关系数据库模型。 - **数据持久化**: 提供对象与数据库之间的持久化管理。 #### 八、JSF简介 - **JavaServer Faces**: 基于组件的Web开发框架,与Struts类似但侧重于组件化。 #### 九、数据库索引和约束 - **索引**: 提高数据检索速度的技术,可以在一个或多个字段上建立。 - **约束**: 保证数据完整性和一致性,包括非空约束、主键约束、外键约束等。 #### 十、Spring框架的核心特点 - **控制反转(IOC)**: 通过容器管理对象及其依赖关系。 - **面向切面编程(AOP)**: 分离关注点,提供横切关注点的实现机制。 SSH框架(即Struts、Spring、Hibernate)是Java Web开发中常用的三大框架组合,它们分别解决了MVC架构、依赖管理和数据持久化等问题,是现代Java Web开发不可或缺的一部分。
- caobeikuku2012-07-28挺全的,但是就是因为太多了,有点看不过来。
- 粉丝: 0
- 资源: 23
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助