Struts + hibernate +spring课堂笔记

    技术2022-05-20  50

    表间的对应关系:

    one-to-onecsacade属性表示级联操作。表示添加,删除,修改主表记录时,从表是否做相应的操作none:表示不作级联(默认)delte:表示删除做级联save-update:表示添加,修改做级联all:添加,修改,删除都做级联

    一对多:

    set集合:元素不能重复。inverse:控制反转。控制关联关系控制方向,维护的是外键,inverse属性用于一对多关联关系上,默认是false表示我们可以从一端和多端进行维护,设置为true后,表示我们只能从多端进行维护。

    cascade是操作记录上的连锁反应,维护的是记录

    私有属性加上get和set方法的好处:1.可以对属性的值加以逻辑判断,避免非法数据的录入.2.可以将属性设置为只读属性.

    一级缓存:也叫session缓存,当作查询时,将对象放在缓存中,如果下次查询时同一个对象,那么就直接从缓存中取出对象,而不用访问数据库,但是如果session关闭,一级缓存同时消失.

    二级缓存:EHcache,OScache <!-- 开启二级缓存 --> <property name="hibernate.cache.use_second_level_cache">true</property> <!-- 指明缓存产品,Hibernate通过该类去连接第三方的缓存产品 --> <property name="hibernate.cache.provider_class">  org.hibernate.cache.EhCacheProvider </property> 

    连接池:

    如果没有空闲连接,则检查当前所开的连接池是否达到所允许的最大连接数(MaxConn)。如果没有达到,就新建一个连接,如果已经达到,就等待一定的定的时间(timeout),如果在等待的时间内由连接被释放出来,就可以把这个连接分配给等待的用户,如果等待时间超过预定时间(timeout),则返回空值。

    连接池到底放多少连接,才能使系统性能最佳?最小连接数是系统启动时连接池所创建的连接数。最大连接数是连接池中允许连接的最大数目,具体设置多少,要看系统的访问量,可通过反复测试,找到最佳点

    类和类的关系:1.依赖--- 一个类中的方法要使用另外一个类提供的方法,这种关系叫做依赖2.关联--- 一个类中有另一个类的实例,关系比较松散,这种关系叫做关联 3.泛化--- 继承4.实现--- 一个类实现一个接口,并重写其中的方法5.聚合--- 是一种特殊的关联,表示一个类是另一个类的组成部分6.组合--- 是一种强聚合,表示一个类是另一个类密不可分的一部分

    面向对象原则:1.开-闭原则:  1.软件实体对扩展开发,对修改关闭。  2.优点:   1):通过扩展已有的模块,提供新的行为,满足新需求,使得变化中的软件系统有一定的适应性和灵活性    2):已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使得变化中的模块有一定的稳定性和延续性  3.怎样做到开闭原则:     1.抽象化,为系统定义一个不再更改的抽象设计,这个设计遇见了所有可能的变化。满足了开闭原则的“闭”     2.找到系统中变化的部分,把可变性封装起来。使用继承或者其他方式来封装变化,将变化封装在一个方法或者类中

    2.里氏转换原则(是开闭原则的补充)   父类出现的地方,子类一定可以替换。替换后软件行为不会发生变化,而且它根本不能识别出父类和子类对象的区别。

       注意:如果子类不能完整地实现父类的方法,或者父类的某些方法在子类中已经发生“畸变”,则断开父子继承关系,采用依赖、聚合、组合等关系代替继承。

    3.依赖倒转原则   抽象不应该依赖于细节,细节应该依赖于抽象   高层模块不应该依赖于底层模块,两个都依赖于抽象   通俗的说:面向接口编程,不要面向实现编程4.接口隔离原则  使用专门的接口比使用一个总的接口好;一个类对另外一个类的依赖性应当建立在最小的接口上  接口理解成角色,一个接口就只是代表一个角色  设计的时候,准确的划分角色以及角色对应的接口5.组合、聚合、复用原则  尽量使用组合、聚合,少用继承  1.继承复用的优势: 1.新的实现较为容易 2.修改或者扩展继承而来的实现比较容易  2.继承复用的缺点: 1.继承复用破坏封装 2.父类的实现发生了改变,子类的实现也不得不改变,耦合度加大 3.父类继承而来的是静态,不可能在运行时间内发生改变。因此没有足够的灵活性6.迪米特原则   又叫最少知识原则   一个对象应当对其他对象有尽可能少的了解   不相往来:将被统治的对像隔离开来,是他们没有直接通信,可以达到分化瓦解,继而分而治之的子效果迪米特法则能够减少耦合,类之间的耦合越小,越有利于复用7.单一职责原则  就一个类而言,应该仅有一个引起他变化的原因  高类聚,低耦合。耦合就是类之间的联系(低耦合表示减少类与类之间的关系,体现依赖倒置原则),高类聚就体现了单一职责原则,一个类职责尽量单一,不能过多单一职责划分,需啊哟考虑功能均衡。过多过细的划分,会使类变多,导致性能的下降

    Spring 能够真正意义上实现针对接口编程

    Ioc :不创建对象,但是描述创建他们的方式

    Spring 容器:1.Bean 工厂:BeanFactory(延迟加载)2.应用上下文: Applicationcontext是BeanFactory的子接口,但更为强大(立即加载) 常用实现:ClassPathXmlApplication、      FileSystemXmlApplicationContext、XmlWebApplicationContext Spring容器中的Bean缺省状态下是单例模式 scope默认是singleton单实例,prptotype是多实例

    id与name的区别:  id是唯一标识bean,不能用特殊字符  name可以用特殊字符,并且一个bean可以用多个名称

    自动装配:1.byName在容器中寻找和需要自动装配的的属性名相同的Bean2.byType在容器中寻找和需要自动装配的属性类型相同的Bean3.conctructor在容器中遵照需要自动专配的bean的构造函数一致的Bean4.antodetect首先使用constructor,再使用byType方式。

    代理模式:为其他对象提供一种代理以控制对这个对象的访问。why:隐藏与业务无关的操作或者访问。通过引入间接性,可以动态的附加一些行为实现。

    AOP核心:切面、连接点、通知、切入点、引入、目标对象、代理、切入通过正则表达式描述目标对象哪些需要执行通知:RegexpMethodPointcutAdvisor

    J2EE != EJB EJB是属于重量级的框架,首先因为其严重依赖于容器运行,其次由于启动时间慢,单元测试难于实现,复杂性导致性能降低

    Spring的核心思想是便于ioC和AOP,Spring本身是一个轻量级容器,Spring的组件就是普通的javaBean

    关于控制反转模式的概念:不是创建对象,但是描述对象创建它们的方式,在代码中不直接与对象和服务连接,但在配置问价中描述那个组件需要那一项服务。容器(在Spring框架中式IOC容器)负责将这些容器联系在一起

    Bean工厂是延迟加载;ApplicationContext是立即加载;ApplicationContext是Bean工厂的扩张;Spring容器中的Bean默认情况下是单态模式,如果不想是单台模式,那么在配置时加上scope=“prototype”

    在配置时id和name的区别是;id是唯一的标识,不能用特殊字符;name可以是多个名称:如:name=“bean1,bean2,bean3”name的第一个名字默认是id

    自动开发适合于快熟开发,但是不建议使用因为会给维护造成困难

    代理模式:对其他对象提供一种代理一控制对向合格对象的访问、为什么要是有代理模式:隐藏与业务无关的操作或者访问、通过引入间接性,可以动态的附加一些实现,这些附加操作一般用于实际对象的状态控制、访问、生命周期管理等。

    AOP术语:

    切面(Aspect):就是你要实现的交叉功能

    连接点(Joibpoint):一个程序执行过程中插入切面的地点,可以是方法调用。异常抛出

    通知(Advice);通过切面的实际实现

    切入点(Pointcut):定义通知应用在那些连接点

    目标对象:被通知的对象

    代理:将通知的应用到目标对象后创建的对象

    织入:将切面应用到目标对象创建一个代理对象的过程

    aop通知的类型有四种l;前置通知后置通知环绕通知抛出异常通知

     

    关于ssh框架的配置(Struts2的配发):

    第一:新建一个WEB项目,并且导入相关的Struts和Hibernate以及Spring的包

    第二:Spring的包我们主要导入的有Spring.jar、aspectjrt.jar、aspectjweaver.jar这三个包分别在:spring-framework-2.0/dist下的一个Spring.jar和spring-framework-2.0/lib/aspectj下的两个aspectjrt.jar、aspectjweaver.jar

    第三:MyEclipse的struts-config.xml可视化编辑下在点击右键选择生成Form、JSP、Action,并且在输入框User case中填写想要生成Form的名字,在Superclass输入框输入org.apache.struts.action.ActionForm、最后是选择需要生成的Form键,以及JSP页面(最好这就写Jsp页面)这样以后我们就配置好了基本框架

    第四:在struts-config.xml中由于Action中有service组件。那么我们就需要指定他是由Struts生成还是有Spring来生成,所以我们需要加入这段话<controller processorClass="org.springframework.web.struts.AutowiringTilesRequestProcessor"></controller>  <message-resources parameter="com.lovo.struts.ApplicationResources" />。AutowiringTilesRequestProcessor这个类在Spring.jar中。具体路径如下:spring.jar/org.springframework.web.struts.AutowiringTilesRequestProcessor类

    第五:在web.xml配置文件中配置监听器: <!-- 监听上下文创建。创建时读取spring相关的配置文件 -->  <listener>   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>      <!-- 指定spring配置文件的路径 -->  <context-param>   <param-name>contextConfigLocation</param-name>   <param-value>classpath:app*.xml</param-value>  </context-param>具体路径:spring.jar、org.springframework.web.context.ContextLoaderListener类注意:当我们action的建立应该由spring生成时<action/>标签中的type属性我们应该删除


    最新回复(0)