1.谈谈hibernate的延迟加载和openSessionInView
答:延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合
的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。
OpenSessionInView模式是Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开 Hibernate的Session,一直保持这个Session,直到这个请求结束。
openSessionInView有两种实现方式:一种是过滤器,还有一种是拦截器。
大概过程是:一次请求->打开session->业务处理->页面渲染->关闭session->响应
2.session.load()和session.get()的区别
答:
(1)如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObejctNotFoundException。
(2)Load方法可返回实体的代理类类型
(3)Load方法可以充分利用内部缓存和二级缓存中现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。
3.spring的事务有几种方式?谈谈spring事务的隔离级别和传播行为。
答:声明事务和编程事务
隔离级别:
- DEFAULT使用数据库默认的隔离级别
- READ_UNCOMMITTED会出现脏读,不可重复读和幻影读问题
- READ_COMMITTED会出现重复读和幻影读
- REPEATABLE_READ会出现幻影读
- SERIALIZABLE最安全,但是代价最大,性能影响极其严重
和传播行:
- REQUIRED存在事务就融入该事务,不存在就创建事务
- SUPPORTS存在事务就融入事务,不存在则不创建事务
- MANDATORY存在事务则融入该事务,不存在,抛异常
- REQUIRES_NEW总是创建新事务
- NOT_SUPPORTED存在事务则挂起,一直执行非事务操作
- NEVER总是执行非事务,如果当前存在事务则抛异常
- NESTED嵌入式事务
4.谈谈对Struts的流程的理解。
答:Request->ActionServlet->如果不存在相应的Action则否则返回error,流程结束->创建ActionForm->进行validatge校验,如果没有通过校验则返回error->创建Action->执行Action
的execute方法,并返回ActionForword对象->return respose->结束
5.谈谈ThreadLocal在spring框架中的作用
答:在管理request作用域的Bean、事务管理、任务调度、AOP等模块起着举足轻重的作用。(可参考个人博客上相关内容)
6.以前项目中有没有用到spring的AOP?具体用来做什么?
答:事务管理、日志、权限管理等。
7.谈谈对struts的MVC的理解。
答:view部分:由JSP页面充当,发起请求和等待请求处理后结果返回都通过JSP页面呈现给用户,struts提供了丰富的标签库,可以最大限度地减少脚本的使用。
controller部分:struts的控制器是分成2个部分:系统核心控制器、业务逻辑控制器。系统核心控制器为ActionServlet,负责拦截所有HTTP请求,然后根据用户请求决定是否需要调用业务逻辑
控制器,如果需要则将请求转发给Action处理(继承Action类)。
model部分:由ActionForm和javabean组成。javabean封装了底层的业务逻辑。
8.Action是不是线程安全的?如果不是 有什么方式可以保证Action的线程安全?如果是,说明原因
答:struts1不是,struts2是;
声明局部变量,或者扩展RequestProcessor,让每次都创建一个Action,或者在spring中用scope="prototype"来管理.
9.Hibernate有哪几种查询数据的方式
答:hql查询,sql查询,条件查询
10.Hibernate中的update()和saveOrUpdate()的区别.
答:摘自hibernate说明文档:
saveOrUpdate()做下面的事:
如果对象已经在本session中持久化了,不做任何事
如果另一个与本session关联的对象拥有相同的持久化标识(identifier),抛出一个异常
如果对象没有持久化标识(identifier)属性,对其调用save()
如果对象的持久标识(identifier)表明其是一个新实例化的对象,对其调用save()
如果对象是附带版本信息的(通过 <version>或 <timestamp>) 并且版本属性的值表明其是一个新实例化的对象,save()它。
否则update() 这个对象
11.Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理。
答:getHiberanteTemplate里面提供了save,update,delete,find等方法。
简单说一个:如果配置了声明式事务,当执行getHibernateTemplate的各种方法的时候,事务会自动被加载;如果没有配置事务,那么以上操作不会真正的被同步到数据库,除非配置了
hibernate的autocommit=true。
分享到:
相关推荐
这个小项目提供了使用SSH框架的实际应用示例,帮助开发者学习和理解这三个框架如何协同工作。 1. **Spring框架**:Spring是Java企业级应用的核心框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程...
这个"ssh整合小项目"旨在帮助开发者解决在整合这三大框架时可能遇到的问题,尤其是关于缺失jar包导致的整合失败。 首先,Spring是一个全面的后端应用程序框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能,...
7. **故障排查**:PuTTY提供了详细的日志记录功能,帮助用户在遇到连接问题时进行调试。 在实际使用中,SSH登录软件如PuTTY极大地提高了IT专业人士的工作效率,使他们能够远程控制服务器、执行命令、管理文件,而不...
通过SSH.NET-develop提供的示例代码,开发者可以学习如何正确使用库中的类和方法来解决这些问题。同时,了解SSH协议的基本原理对于更好地利用SSH.NET库也至关重要。 为了深入理解SSH.NET,开发者需要熟悉.NET框架、...
这个小案例提供了SSH整合的具体实现,对于项目研发具有很高的实用价值。下面我们将详细探讨SSH整合的关键知识点。 首先,Spring是企业级应用中的核心框架,它负责管理应用的bean(对象)和依赖注入(DI)。在SSH...
"Git小乌龟"(TortoiseGit)是Git的一个图形化界面工具,专为Windows用户设计,提供了友好的操作界面,使得用户可以更直观地进行版本控制操作。 TortoiseGit的安装过程如下: 1. 首先,你需要下载并运行`...
这个"ssh测试小demo"可能是一个简单的示例项目,用于演示如何在Java应用程序中集成SSH框架,以便进行分布式系统操作,如远程命令执行、文件传输等。SSH整合通常指的是Spring、Struts和Hibernate这三个开源框架的集成...
在"ssh框架新手小项目"中,你将学习到: 1. 如何配置Spring框架,包括编写beans.xml文件,定义Bean的实例化和依赖关系。 2. Spring MVC的使用,包括DispatcherServlet的配置,Controller的定义,以及视图解析器的...
ssh开发中遇到的一些小问题的解决办法,或许有能帮到你的也说不定
SSH(Struts + Spring + Hibernate)是一个经典的Java Web开发框架,用于构建高效、可扩展的Web应用程序。...通过这个项目,学习者不仅能巩固SSH框架的使用,还能进一步提升自己的编程和问题解决能力。
在处理大型项目或高并发场景时,还需要考虑性能优化、安全配置等问题。 总的来说,SSH框架通过Struts2的控制层、Spring的服务层和Hibernate的数据访问层,构建了一个完整的、可扩展的Java Web应用解决方案。对于...
在描述中提到的“一个小问题没解决”,可能指的是在上述流程中的某个环节遇到了困难,比如连接问题、认证问题、命令执行错误或文件传输问题。解决这类问题通常需要检查配置参数、网络状况、权限设置以及代码实现是否...
SSH协议是为了解决传统的远程登录协议(如Telnet)的安全问题而设计的。它使用加密技术保护数据传输,确保用户的身份验证、命令执行和数据交换过程中的隐私和完整性。SSH通常用于在服务器之间建立安全的隧道,支持...
此外,利用Eclipse、IntelliJ IDEA等IDE的调试工具,可以方便地定位和解决问题。 通过SSH整合,开发者可以构建出结构清晰、分工明确的Java Web应用,提高开发效率,降低维护成本。理解并熟练掌握SSH的配置和使用,...
8. 系统资源监控:使用监控工具(如JConsole或VisualVM)实时查看和分析Tomcat的内存使用情况,及时发现问题。 综上所述,SSH整合和Tomcat内存优化是Java Web开发中提升应用性能的关键步骤。通过理解各个框架的职责...
4. **安全性与优化**:在使用SSH时,需要注意安全性问题,如定期更换密钥、限制无效登录尝试、使用强密码策略等。此外,还可以通过配置SSH参数,比如调整连接超时、设置最大并发连接数等,来优化SSH服务的性能。 5....
SSH简单项目是一个基于Java的Web开发实践,主要涵盖了...同时,遇到问题可以联系作者,获得指导和帮助。 总之,SSH简单项目是一个理想的入门教程,它帮助开发者深入理解三大Java Web框架的使用,增强实际开发能力。
SSH小项目1是一个适合初学者入门的编程实践项目,它主要涵盖了SSH(Struts、Spring、Hibernate)这三大Java Web开发框架的综合运用。SSH框架是Java领域中广泛使用的三大开源框架,它们各自负责Web应用的不同层面:...
通过这个小项目,开发者不仅可以巩固SSH框架的理论知识,还能积累实际项目经验,理解如何将理论应用到实践中,提升解决问题的能力。同时,这个项目也为进一步学习Spring Boot、Spring Cloud等现代Web开发框架打下了...
在本文中,我们将深入探讨如何使用Qt库实现SSH(Secure Shell)功能,包括文件上传、下载和执行远程命令。Qt是一个跨平台的应用程序开发框架,它提供了丰富的功能,包括图形用户界面、网络通信等,而SSH则是一种用于...