表间的对应关系:

one-to-one
csacade属性表示级联操作。表示添加,删除,修改主表记录时,从表是否做相应的操作
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在容器中寻找和需要自动装配的的属性名相同的Bean
2.byType在容器中寻找和需要自动装配的属性类型相同的Bean
3.conctructor在容器中遵照需要自动专配的bean的构造函数一致的Bean
4.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属性我们应该删除

Struts + hibernate +spring课堂笔记相关推荐

  1. MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-1]

    示例数据库test,用户信息表 MyEclipse连接 MySql Database . MyEclipse创建Web工程 ,并加入Hibernate支持 [项目右键->MyEclipse-&g ...

  2. Struts hibernate Spring 框架原理

    转自:http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156521.html 原理: 1.通过Configuration().configu ...

  3. JSP + Struts + Hibernate + Spring+MySQL+Myeclipse实现固定资产管理系统

    导读:随着计算机信息技术的发展以及对资产.设备的管理科学化.合理化的高要求,利用计算机实现设备及资产的信息化管理已经显得非常重要.固定资产管理系统是一个单位不可缺少的部分.但一直以来人们使用传统的人工 ...

  4. Struts,Spring 等开源项目svn 地址

    struts/hibernate/spring 等框架的svn地址 Spring3.0                                https://src.springframewo ...

  5. Hibernate课堂笔记

    Hibernate课堂笔记 Hibernate第一天 一:hibernate的基础知识 Hibernate的整体思想就是"操作对象的过程,就是操作数据库表的过程".如图: 1:Hi ...

  6. 基于Spring+Struts+Hibernate实现的健康管理平台

    源码及论文下载:http://www.byamd.xyz/tag/java/ 摘要 随着网络技术的不断发展,网站的开发与运用变得更加广泛.这次采用java语言SSH框架(Spring,Struts,H ...

  7. Struts 2+Spring 3+Hibernate 3.3 在MyEclipse 10环境下的整合配置

    想动手做一个SSH框架下的登录注册功能,虽然网上类似的教程很多,可是看了一圈,不是版本问题,就是漏掉了许多关键的步骤.经过几个小时的奋战,终于搞定了所谓很简单的SSH整合实现注册功能,下面把所有的步骤 ...

  8. Spring + Struts + Hibernate联合开发(多对一关系)

    一.项目搭建的整体效果: 1.建立好项目后,需要再建立两个单独的源文件夹,分别为test和config 在config下分别建立struts,spring和hibernate三个文件夹,以便分别放这三 ...

  9. 《大型门户网站是这样炼成的!(Struts 2+Spring 2+Hibernate 3) 》

    <大型门户网站是这样炼成的!(Struts 2+Spring 2+Hibernate 3) > http://book.51cto.com/art/201004/193508.htm

最新文章

  1. 马云第一次创业翻译社,差点倒闭,兼卖鲜花和礼物维持终翻身
  2. ThreadLocalMap的enrty的key为什么要设置成弱引用
  3. 使用隐式Intent打开系统内置拨号界面
  4. 笔记-信息系统开发基础-面向对象基本概念-多态
  5. [译] 用 Shadow DOM v1 和 Custom Elements v1 实现一个原生 Web Component
  6. python下载图片的命令_网上的图片不知道怎么批量下载?python教你怎么把网站上面的图片都爬下来...
  7. 计算机视觉研究入门全指南
  8. 推荐背单词最有效的方法:使用艾宾浩斯记忆曲线背单词
  9. HTML5 Notification
  10. 在码云上如何创建仓库
  11. 如何在Mac上控制对日历的访问?
  12. TestNG在接口测试中的应用
  13. nagios 飞信通知
  14. 如何使用C++做个简单推箱子游戏
  15. PCB多层板生产工艺的起源与发展(一)
  16. System memory,AGP memory和video memory【转】
  17. pandas打印某一列_一场Pandas与SQL的巅峰大战
  18. chrony配置外部时钟源后stratum=16
  19. ​抖音怎么养号容易热门,一机两卡养抖音号可以吗
  20. 全排列的递归算法(C语言)

热门文章

  1. AVAST 8.0网络版 提示我是盗版用户,为何还能升级更新?
  2. 【LAB2-Cisco】网络数据通信过程——ping不通如何排查
  3. 软件测试行业到底有没有前景和出路?
  4. [Win8.1系统]双系统
  5. 教师国庆放假通知文案
  6. 屏蔽浏览器f1帮助,启用自己的帮助
  7. C语言 二叉树的相关操作
  8. 【GD32F427开发板试用】二、USB库移植与双USB CDC-ACM功能开发
  9. 数学教育与计算机教育的新讲座的心得体会,数学新课程培训心得体会(精选7篇)...
  10. Win10桌面取消自动排列,刷新仍然有图标移动——适用于桌面排列患者