摘要: 7.1、并发修改可能出现的问题 但两个线程同时修改一个对象时,后操作的对象会将前一个操作对象所更新的值还原。 这样就可能存在并发的问题。 如果需要解决并发需要为其增加锁来控制访问的情况 有两种方案 1、悲观锁(基于数据库的机制的锁) 2、乐观锁(基于Hibernate来加载的锁) 7.2、悲观锁 悲观锁是基于数据库来进行控制 当这个对象被上锁之后,只能有一个线程对其进行操作,如果... 阅读全文
posted @ 2015-12-06 20:15 拉风的风吹哥 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 6.1、基于xml的抓取 抓取策略主要是指获取连接对象的策略 1、基于xml抓取Many-to-one 1.2、设置fecth=join 1.3、但是fecth=join无法抓取hql中的list,如果需要抓取hql中的list有两种方法 ·设置one这一端对象的batch-size,此时会通过in的语句来加载多条数据 ·在hql语句中写预抓取(join ... 阅读全文
posted @ 2015-12-06 20:13 拉风的风吹哥 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 5.1、N+1问题 1、使用Iterator查询可能发生N+1,因为iterator仅仅是查询id,当使用到数据时才去相应的数据库中取对象 2、使用list+iterator可以有效解决N+1 最佳实践:一般不用iterator() 5.2、一级缓存 1、一级缓存,缓存对象,并且session内有效,默认不会关闭,除非程序员控制 2、一级缓存仅仅只是在session内部有... 阅读全文
posted @ 2015-12-06 20:12 拉风的风吹哥 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 1、基本查询 1、不带条件的查询 2、带条件的查询 3、通过参数进行查询 4、 通过命名参数进行查询 5、查询空元素 2、常用查询 1、列表查询(in ()) 2、投影查询 3、投影一个元素查询(注意:不能使用select *来查询 ) 4、投影其他类型 5、单个元素查询(uniqueResult) 6、分页查询 3、基于对象的... 阅读全文
posted @ 2015-12-06 20:11 拉风的风吹哥 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 3.1、基本映射 3.2、一对一 3.3、一对多 m:1单向 1:m单向 双向 3.4、多对多 多对多双向 两个一对多 阅读全文
posted @ 2015-12-06 20:09 拉风的风吹哥 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 2.1、映射简介 对于所有的对象实体而言,有如下三种关系 1:1,1:n,m:n 一种双向,一种单向 Classroom --- Student Set Classroom cla 1对多 2.2、一对多映射 多对 1单向 many-to-one单向:指的是在多的这一端增加关联 配置文件的写法 1、添加方式1 先创建many在创建one... 阅读全文
posted @ 2015-12-06 20:08 拉风的风吹哥 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 1.1、hibernate快速预览 Hibernate是目前非常流行的ORM框架,Object Relation Model,通过ORM框架我们可以仅仅只用对对象进行操作就可以轻松的实现对数据库的操作。3.6.8 入门: 1、导入Hibernate的jar包 -hibernate-->lib-->required -hibernate-->hiberate.jar -h... 阅读全文
posted @ 2015-12-06 20:06 拉风的风吹哥 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 1、整体架构 2、环境搭建 2.1、web.xml 2.2、xxx-servlet.xml 2.3、controller 2.4、Viewer 3、Rest webservice SOAP xsd 阅读全文
posted @ 2015-12-06 20:05 拉风的风吹哥 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 4.1、和hibernate的整合 1、写hibernate的配置文件并且完成bean的创建,完成相应的映射 2、写spring的beans.xml 使用spring来管理hibernate最主要的就是让Spring来管理SessionFactory 3、在beans.xml中加入spring的事务控制代码 4.2、HibernateTemplate的使用 使用Hibe... 阅读全文
posted @ 2015-12-06 20:04 拉风的风吹哥 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 3.1、静态代理 当需要为一些成熟的项目增加日志时,需要修改到原有代码,此时可以为原有的对象创建一个静态代理类,在这个代理类中实现相应的日志或者权限控制操作 使用静态代理带来的最大问题,需要为每一个类都加入相应的控制代码,这些代码其实是和业务逻辑没有关系的。 3.2、动态代理 动态代理可以将一些横切性的问题(日志管理,权限控制)提取出来成为一个模块,之后在运行的时候根据需要切入到原有正... 阅读全文
posted @ 2015-12-06 20:04 拉风的风吹哥 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 2.1、spring的对象类型 singleton和Prototype singleton是单例 Prototyp是多例 默认是单例的对象 使用范围: 只要属性中没有需要修改的值(dao,service这两层的数据一般不会有相应的属性会修改)所以可以考虑用单例 如果属性中有需要修改的变量如:action中会存储很多要操作的vo类,此时这个对象的状态会被修改,就要使用多例 2.2、... 阅读全文
posted @ 2015-12-06 20:02 拉风的风吹哥 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 1、导入jar包 dist中的所有文件 common-loggin 2、创建beans.xml文件,通过这个文件来进行spring常规配置(在类路径下创建) 3、创建相应的对象 4、在beans.xml中设置对象 5、写测试类 阅读全文
posted @ 2015-12-06 20:01 拉风的风吹哥 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 4.1、ModelDriven 如果希望传递对象信息到action,但对象信息较多时,需要传递大量的参数并且要设置这些参数,工作量很大,所以建议的方式是在action中直接创建相应的对象,此时在jsp页面中可以通过如下一种方式进行参数的传递 但是使用这样的方式带来的问题是在表单中的名称不能按照我们开发人员的习惯来定义,此时就需要通过ModernDriven来实现如下传值 1、让actio... 阅读全文
posted @ 2015-12-06 20:00 拉风的风吹哥 阅读(144) 评论(0) 推荐(0) 编辑
摘要: Struts2中的Action是一个纯java对象 默认的action会执行execute方法 2.1访问不同的方法 1、可以为action设置多个method,之后在struts.xml文件中配置这些action所对应的方法 2、只是写一个action,通过一些特殊的方法来进行访问 以上操作问题是:需要为不同的方法设定不同的返回值。这个名称不好统一 3、使用通配符的方式 ... 阅读全文
posted @ 2015-12-06 19:58 拉风的风吹哥 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 3.1、OGNL基础 对于OGNL而言,特别注意两点 1、存储值有两种方式: 第一种:可以直接存储在Root根对象中,之后根据OGNL的导航性可以直接获取到值 第二种:可以存储到一个map的Context中,也同样可以根据导航性获取到值(如果要获取map中的值需要使用#) 2、OGNL可以直接调用方法 3.2、ValueStack 1、struts2使用... 阅读全文
posted @ 2015-12-06 19:55 拉风的风吹哥 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 1、导入相应的jar包(可以参考blank项目)2、设置web.xml开启struts2的过滤器3、创建相应的action 对于struts2而言,action不用继承人或类都可以4、编写struts.xml文件(在类路径中创建struts.xml)特别注意以上的extends中的值应该是strut... 阅读全文
posted @ 2015-12-06 19:52 拉风的风吹哥 阅读(50) 评论(0) 推荐(0) 编辑