`

SSH

    博客分类:
  • SSH
SSH 
阅读更多
Struts2:
1-1:为什么每次请求都要创建一个Action对象?
1-2:ModelDriven拦截器的配置中refreshModelBeforeResult解决了什么问题?
1-3:为什么在web.xml中配置的StrutsPrepareAndExecuteFilter要过滤所有的请求?
1-4:请你给我谈谈ValueStack?
1-5:Struts2是如何实现MVC设计模式的?

Spring:
2-1:你为什么要用Spring?
2-2:请你聊一聊IOC/DI?
2-3:什么是声明式的事务管理?为什么要使用声明式的事务管理?Spring如何实现声明式的事务管理?
2-4:把spring和hibernate集成,定义事务管理特性的时候,为何要将除了添加、删除、更新操作之外的方法,即主要执行 查询任务的方法定义为read-only?

Hibernate:
3-1:请你谈谈你对OR映射的理解?
3-2:很多人说Hibernate不适合大项目,性能有问题,你是如何理解的?
3-3:Hibernate为什么一定要定义一个数据库标识?
3-4:为什么Hibernate建议你的实体类实现hashCode和equals方法?
3-5:谈谈你对Hibernate实体类中的数据库标识与数据库主键之间关系的认识?
3-6:谈谈你对Hibernate关联映射与数据库外键之间关系的认识?
3-7:调用session.save()方法,hibernate一定会发出insert语句吗?谈谈你的理解
3-8:调用session.update()方法,hibernate一定会发出update语句吗?谈谈你的理解
3-9:请你聊一下以下名词、概念或用法:lazy、lazy=”extra”、inverse、fetch、fetch=”join”、fetch=”subselect”、batch-size
3-10:配置了lazy=”true”一定会实现懒加载吗?
3-11:请你谈谈Hibernate中的“N+1”问题
3-12:请你谈谈Hibernate有哪些最佳实践?


1-1:为什么每次请求都要创建一个Action对象?
为了防止线程迸发,如果每次都使用同一个Action进行数据修改和传递的话,容易引起线程迸发,使线程不安全。
1-2:ModelDriven拦截器的配置中refreshModelBeforeResult解决了什么问题?
在数据输出之前将数据接收的Bean里面的数据清空。解决了数据混淆的可能性。
1-3:为什么在web.xml中配置的StrutsPrepareAndExecuteFilter要过滤所有的请求?
为了1.可以将数据进行过滤
       2.可以进行数据的转码将数据进行统一的编码
1-2:请你给我谈谈ValueStack?
堆值,堆里面的值。
1-5:Struts2是如何实现MVC设计模式的?
在Struts2里面是将每次页面的请求进行处理,然后将请求需要输出的数据转发的需要做数据显示的页面,Struts2只是起一个数据接受和转接的功能,就是Controler控制器,而传来数据的页面叫View显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的链接。


2-1:你为什么要用Spring?
使用Spring 1.主要将各个框架进行有效的联系起来,缩短实际编程的时间,起一个润滑剂的作用。
                  2.可以将各个框架进行有效的管理和控制,让数据传输中安全。
2-2:请你聊一聊IOC/DI?
依赖注入和控制反转Spring的两大基础作用
主要是将所有组件在Spring提供的外部容器中加载,提高安全性,减低耦合性,使各个框架或者类之间的依赖性降低。
2-3:什么是声明式的事务管理?为什么要使用声明式的事务管理?Spring如何实现声明式的事务管理?
声明事物管理主要是将在进行对数据库中数据进行添加或者修改的时候需要执行事物管理。主要是避免在执行数据修改和添加的时候数据添加或者修改不完全,导致数据丢失。
Spring是使用AOP面向切面的思想进行事物管理的。
2-4:把spring和hibernate集成,定义事务管理特性的时候,为何要将除了添加、删除、更新操作之外的方法,即主要执行 查询任务的方法定义为read-only?
因为添加和删除和更新都涉及到数据库的修改,而查询并为涉及数据修改,所以只需要定义只读,这样可以提高效率,进行更加方便的事物管理。而事物管理主要是为添加和删除和更新设计的。


3-1:请你谈谈你对OR映射的理解?
将数据库里面的每一张表都映射成一个实体。
3-2:很多人说Hibernate不适合大项目,性能有问题,你是如何理解的?
因为Hibernate属于大型框架,里面对许多方法的封装比较多,让SQL控制权降低。这样的话,适用性就会降低,在不必要的操作上会浪费时间。但是只要将Hibernate里的配置进行优化,也能提高其性能。
3-3:Hibernate为什么一定要定义一个数据库标识?
可以让映射文件变得简洁,消除无用的噪音(比如TBL_前缀等)。Hibernate使用的默认策略是几乎什么都不做,所以使用标识的作用就是使数据操作更加简洁和方便
3-4:为什么Hibernate建议你的实体类实现hashCode和equals方法?
因为Hibernate使用了一级和二级缓存,很多查询为了提高效率Hibernate都会先从缓存中进行查找,然后再从数据库进行查找。而HashCode是唯一的,所以这样避免数据操作出现数据混淆的可能,而equals的作用是对比Hibernate缓存中数据是否一致。
3-5:谈谈你对Hibernate实体类中的数据库标识与数据库主键之间关系的认识?
数据库标识是为了方便和简洁映射文件,而主键是为了使数据不会重复。
3-6:谈谈你对Hibernate关联映射与数据库外键之间关系的认识?
Hibernate在进行映射的时候会将数据库的关系也进行映射将数据库中的外键也使用标签的形式进行管理,这样在人为操作的时候就不需要手动的管理数据库关系了。
3-7:调用session.save()方法,hibernate一定会发出insert语句吗?谈谈你的理解
不会,具体执行步骤如下:
     1. 首先在Session内部缓存中进行查找,如果发现则直接返回。
     2. 执行实体类对应的Interceptor.isUnsaved方法(如果有的话),判断对象是否为未保存状态。
      3. 根据unsaved-value判断对象是否处于未保存状态。
      4. 如果对象未保存(Transient状态),则调用save方法保存对象。
      5. 如果对象未已保存(Detached状态),则调用update方法将对象与Session重新关联。 。
3-8:调用session.update()方法,hibernate一定会发出update语句吗?谈谈你的理解
理解同上
3-9:请你聊一下以下名词、概念或用法:lazy、lazy=”extra”、inverse、fetch、fetch=”join”、fetch=”subselect”、batch-size
lazy懒,lazy=“extra”extra属性是不大容易重视的,其实它和true差不多,但有个小的智能的地方是,即调用集合的size/contains等方法的时候,hibernate并不会去加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在真正需要用到这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据
inverse控制翻转,主要是为了让谁去维护关系,一般是在主表中配置,将维护关系的只能交给主键。
fetch取来,fetch="join"主要是在查询的时候Hibernate会自动查询有关联的表。fetch="join",hibernate会通过select语句使用外连接来加载其关联实体或集合,此时lazy会失效
fetch="subselect",另外发送一条select语句抓取在前面查询到的所有实体对象的关联集合
batch-size配置这个属性是让Hibernate在执行批量的数据库操作
3-10:配置了lazy=”true”一定会实现懒加载吗?
不一定,因为如果再配置中你也使用fetch属性的话此时lazy就会失效
3-11:请你谈谈Hibernate中的“N+1”问题
主要是如果再一般的查询时,如果需要查询很多次,就需要像数据库发送很多条SQL语句,而且,会返回很多个结果,而Hibernate中使用N+1策略时执行Criteria时,会将自动进行SQL构造,并且映射到实体Bean中,就只会返回一个结果,这样不仅提高了性能,而且在处理返回值的时候也变得比较轻松。
3-12:请你谈谈Hibernate有哪些最佳实践?
数据库建模,ORM是Hibernate中比较经典。


原文地址:http://zhidao.baidu.com/question/255434112.html
分享到:
评论

相关推荐

    SSH2框架搭建实例源码

    SSH2框架,全称为Spring、Struts2和Hibernate2的集成框架,是Java Web开发中的一个常见组合。这个实例源码使用的是Spring 3.2、Struts2 2.3.4和Hibernate 4.2这三个框架的较新版本,提供了一个基础的用户登录和用户...

    SSH.NET-develop.zip_SSH.net_VI1Q_ssh

    SSH.NET 是一个开源的.NET库,专为.NET开发者设计,用于实现Secure Shell(SSH)协议。这个库使得在C#、VB.NET或其他.NET语言中安全地执行远程命令、传输文件或者建立安全隧道变得简单。"SSH.NET-develop.zip_SSH...

    sshshell.zip

    SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。在IT领域,SSHshell是Linux或Unix类系统中常用的一种命令行接口,用于远程控制和管理服务器。通过SSH,用户可以执行命令、...

    ssh工具 python脚本.zip

    这是一个python脚本工具,主要用于快捷的搜索文档并通过ssh将其上传到指定的ssh服务端,或者从ssh服务端快捷的搜索文档并下载到本地。工具包中有一个 ssh工具.bat 脚本,该脚本可以用于启动 ssh工具.py 脚本,双击...

    ssh离线升级版本,不用卸载旧版本ssh直接替换历史版本,迁移密钥重启ssh

    记录一下ssh离线升级版本(有openssh8.8安装包和依赖),redhad的ssh7.4升级到8.8,不用卸载旧版本ssh直接替换历史版本,迁移密钥重启ssh。有一定危险,我这有安全限制不能用telnet连接,需要多开几个ssh连接已被...

    OpenSSH登录SSH2

    SSH2是SSH协议的第二个版本,提供了更安全的数据传输方式。OpenSSH是SSH协议的一种免费实现,广泛应用于各种操作系统中。 #### 二、如何确定使用的SSH版本 为了判断当前系统中安装的是OpenSSH还是SSH2,可以通过...

    android 实现 ssh功能

    在Android平台上实现SSH(Secure Shell)功能,可以让用户通过安全的网络协议远程访问和控制设备。SSH是一种网络协议,主要用于安全地执行命令行操作、传输文件等,它使用加密技术确保数据传输的安全性。以下是对...

    ubuntu16 离线安装ssh

    在Ubuntu 16.04系统中,SSH(Secure Shell)是一种网络协议,用于安全地在本地主机与远程服务器之间进行通信。它提供了命令行接口,使得用户可以在不直接连接到服务器的情况下执行命令、传输文件等操作。离线安装SSH...

    SSH_Test.rar_C ssh_C#ssh_C++ ssh_C++ SSH_libssh2库

    SSH_Test.rar_C ssh_C#ssh_C++ ssh_C++ SSH_libssh2库是一个针对C、C#和C++编程语言的SSH实现示例,特别提到了libssh2库的使用。在Visual Studio 2010环境下,这个压缩包提供了通过SSH进行文件上传的功能。接下来,...

    SSH协议相关rfc文档

    本资源包含了SSH协议相关的主要rfc文档 其中有: rfc4250 The Secure Shell SSH Protocol Assigned Numbers pdf rfc4251 The Secure Shell SSH Protocol Architecture pdf rfc4252 The Secure Shell SSH ...

    sqlserver数据库SSH配置1

    SQLServer 数据库 SSH 配置详解 SQLServer 数据库 SSH 配置是将 SQLServer 数据库与 Secure Shell(SSH)协议集成,以实现加密的数据传输和身份验证。本文将详细介绍 SQLServer 数据库 SSH 配置的实现步骤和相关...

    SSH Secure Shell工具

    SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。SSH Secure Shell工具是Linux环境中广泛使用的工具,它允许用户通过加密的方式与远程服务器进行交互,确保数据传输的安全性...

    SSH工作原理及流程

    SSH 工作原理及流程 SSH(Secure Shell)是一种安全的网络协议,用于提供安全的远程访问和文件传输。SSH 协议具有广泛的应用场景,如远程登录、文件传输、网络管理等。下面是 SSH 工作原理及流程的详细说明: 一、...

    H3C华三开启SSH配置登录

    ### H3C华三网络设备SSH配置详解 #### 一、引言 SSH(Secure Shell)是一种加密的网络传输协议,常用于远程登录管理网络设备。对于H3C(华三)网络设备而言,SSH提供了安全的方式来管理和配置设备。本文将详细介绍...

    ssh协议依赖jar包:ganymed-ssh2-build

    SSH(Secure Shell)协议是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。在Java环境中,开发人员通常使用库来实现SSH功能,其中一个常用的库就是Ganymed SSH-2。这个库名为ganymed-ssh2-build...

    ssh-copy-id 脚本

    问题:ssh-copy-id 命令无法使用,在linux服务器的ssh服务中没有有这个命令,可以在/usr/bin/的这文件夹中查看没有这个ssh-copy-id 命令。 问题分析:是由于ssh服务的问题,可以直接将ssh-copy-id 命令拷贝/usr/...

    Linux 配置SSH免密登录 “ssh-keygen”的基本用法

    1 什么是SSH 引用百度百科的说明: SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定;它是建立在应用层基础上的安全协议。 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供...

    SSH框架搭建源码

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个压缩包文件"SSHdemo"提供了一个SSH框架搭建登录功能的示例,帮助开发者了解并实践如何整合这三个框架来构建一个...

    在juniper路油器上配置ssh  

    ### 在Juniper路由器上配置SSH服务 #### 一、引言 随着网络安全需求的日益增长,采用安全的方式管理网络设备变得至关重要。SSH(Secure Shell)作为一种加密的网络协议,为远程登录提供了强大的安全保障。本文将...

    ssh集成 ssh集成

    SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。SSH集成通常指的是将SSH功能与其他系统或工具整合,以实现更高效、更安全的远程管理和服务交互。在IT领域,SSH集成尤其常见...

Global site tag (gtag.js) - Google Analytics