03 2014 档案
摘要:@OneToMany(mappedBy="image",cascade=CascadeType.ALL,fetch=FetchType.EAGER)@Fetch(value=FetchMode.SUBSELECT)两者比较:两者都是设定关联对象的加载策略。前者是JPA标准的通用加载策略注解属性,后者是Hibernate自有加载策略注解属性。FetchType可选值意义与区别如下:FetchType.LAZY:懒加载,在访问关联对象的时候加载(即从数据库读入内存)FetchType.EAGER:立刻加载,在查询主对象的时候同时加载关联对象。FetchMode可选值意义与区别如
阅读全文
摘要:默认情况下,JPA 持续性提供程序在映射多对多关联(或在单向的一对多关联中)的拥有方上的实体关联时使用一个连接表。连接表名称及其列名均在默认情况下指定,且 JPA 持续性提供程序假设:在关系的拥有方上的实体主表中,每个主键列有一个连接列。通过表关联的方式来映射一对多或者多对多的关系时,要使用@JoinTable这个标记。该标记的定义如下所示。@Target({METHOD, FIELD})public @interface JoinTable {String name() default "";String catalog() default "";St
阅读全文
摘要:结构型模式,讨论的是类和对象的结构,它采用继承机制来组合接口和实现,或者通过组合一些对象,从而实现新的功能。Gof23中设计模式中的结构模式有7种,分别是适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、外观模式(Facade)、桥接模式(Bridge)、组合模式(Composite)、享元模式(Flyweight)(1)适配器模式:核心思想—把原有的接口转变成为调用者期待的接口,从而使不同接口的类可以一起工作。 适配器包含3个角色:原角色Adaptee—需要适配的目标类或接口、目标角色Target—所期望得到的接口、适配器角色Adapter—适配器类是本
阅读全文
摘要:创建型模式和结构型模式强调的是静态的类与对象之间的关系,行为型模式着力解决的则是类与对象之间的通信关系,以面向对象的方式描述软件的控制流程。GoF23中设计模式中行为型模式有11种,分别是策略模式(Strategy)、模板方法模式(Template)、观察者模式(Observer)、迭代子模式(Iterator)、责任链模式(Chain of Responsibility)、命令模式(Command)、备忘录模式(Memento)、状态模式(State)、访问者模式(Visitor)、中介者模式(Mediator)、解释器模式(Interpreter)。(1)观察者模式(Observer):
阅读全文
摘要:面向接口编程:通过接口规约对象的属性和方法,是面向对象一部分。面向对象编程:通过封装、继承、多态等更加有效的组织程序。面向方面编程:把业务的主逻辑和次逻辑分开的一种思想
阅读全文
摘要:现代软件大量的使用框架、模式(非特指Deisgn Pattern),也就是将软件开发的一些共性进行抽象,提出普遍适用的软件结构。 无论是框架还是模式,他们都有一些明显的共同点 — 使用xml配置对象,大量使用接口采用所谓面向接口的方法,利用反射实现。 为什么要接口?因为需要抽象,需要将未知的对象在已有的框架中表现。 如何实现接口?多态!所谓反射,实际上就是一种晚期绑定的技术,这个技术实质上表现出来的就是多态这一特征。 面向方面开发(Aspect Oriented Programming)是一个热点,也是现代软件发展的趋势。定制、组件装配的软件开发方式在应用越来越复杂、需求变化越来越快的今天显.
阅读全文
摘要:创建型模式,就是用来创建对象的模式,用来帮助一个系统 去创建、组合和表示它的那些对象。GoF23种设计模式中创建型模式有5中,分别是:工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、单例模式(Singleton)、建造者模式(Bulider)、原型模式(Prototype)。(1)工厂方法模式(Factory Method):定义一个创建产品对象的工厂类,由该工厂统一创建继承了统一个接口的多个产品对象。根据创建策略的不同,又分为3中类型。 》工厂方法模式:为普通的工厂方法模式。 》多个工厂方法模式:提供了多个工厂方法,分别创建不同的产品对...
阅读全文
摘要:有一个很简单的例子,java.util中的类ArrayList实现了接口List则生成ArrayList对象时可用以下语句. List list=new ArrayList(); 也就是说所有实现了接口List的类,都可以用List接口来声明对象类型,然后用实体类进行实例化.这表明了接口可以用来作为类型的表述.当然,生成的对象list只能调用接口List中提供的方法. 同样的操作也可以用在父类与子类身上,例如设A类是B类的父类 则创建B类对象的时候可以用以下语句 A b=new B();这样的用法可以大大提高编程的灵活性.~***Tank implements moveableinterfac
阅读全文
摘要:Java里面由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现。Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程,正确地使用接口、抽象类这些太有用的抽象类型做为java结构层次上的顶层。Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了。1、Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Ja
阅读全文
摘要:1.开闭原则:软件系统对拓展开放,对修改关闭。做到开闭原则,注意一下两点:(1)多使用抽象类。在设计类是,对于拥有共同功能的相似类进行抽象化处理,将公有的功能部分放到抽象类中,所有的操作都调用子类。(2)多使用接口。与抽象类不同,接口只定义子类应该实现的接口函数,而不实现公有的功能。在现在大多数的软件开发中,都会为类定义接口,这样在扩展子类时实现该接口。2.接口隔离原则:使用多个隔离的接口,比使用单个接口好
阅读全文
摘要:1、抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。原因如下:抽象方法没有方法体,是用来被继承的,所以不能用private修饰;static修饰的方法可以通过类名来访问该方法(即该方法的方法体),抽象方法用static修饰没有意义;使用synchronized关键字是为该方法加一个锁。。而如果该关键字修饰的方法是static方法。则使用的锁就是class变量的锁。如果是修饰 类方法。则用this变量锁。但是抽象类不能实例化对象,因为该方法不是在该抽象类中实现的。是在其子类实现的。所以。锁应该归其子类所有。
阅读全文
摘要:JPA Java Persistence API,是Java EE 5的标准ORM接口,也是ejb3规范的一部分。Hibernate,当今很流行的ORM框架,是JPA的一个实现,但是其功能是JPA的超集。JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。那么Hibernate是如何实现与JPA的这种关系的呢。Hibernate主要是通过三个组件来实现的,及hibernate-annotation、hibernate-entitymanager和hibernate-core。hibernate-annotation是Hibernate支持annot
阅读全文
摘要:为什么要使用属性驱动和模型驱动struts2与struts很大的不同点在于,struts的execute方法提供了HttpServletRequest和HttpServletResponse方法在获取客户端提交的数据信息的时候需要使用HttpServletRequest的getParameter()方法,并且还需要进行必要的数据类型转换。如何客户端提交的数据量大的时候,我们则需要写很多的getParameter方法。这样代码量就相应的增加不少。但是struts2为我们提供了属性驱动和模型驱动,它不需要我们写很多的获取值的方法。而只需要我们在Action中定义相应的getter方法,在界面上以A
阅读全文
摘要:学习Struts2也有一段时间了,今天用Servlet写了一个验证码,然后搬到Struts2中,惊奇地发现Servlet无法访问,出现404错误!后来折腾了半天,终于找出原因了。这也算我学习中的一个重大发现吧。写下来给大家分享一下:在李刚编写的《Struts2权威指南》一书中,他用的是Struts2.0*版本。而我在开发中用的是Struts2.1*版本的构包。其中有很大不同就是,新版本对servlet实现了过滤,而旧版本并未对其进行过滤!原来我的web.xml定义了一个struts的Filter过滤所有用户请求,如下:struts2org.apache.struts2.dispatcher.F
阅读全文
摘要:程序一般都是在用户做log off的时候发个指令去删除session,然而浏览器从来不会主动在关闭之前通知服务器它将要被关闭,因此服务器根本不会有机会知道浏览器已经关闭。服务器会一直保留这个会话对象直到它处于非活动状态超过设定的间隔为止。之所以会有这种错误的认识,是因为大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个session id就消失了,再次连接到服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求报头,把原来的session id发送到服务器,则再次打开浏览器仍然
阅读全文
摘要:int 是基本类型,直接存数值 integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者>>integer 是后者(也就是一个类) Integer是对象类型int是原始类型适用场合有很大的不同之所以要把int封装成Integer型是因为很多方法参数就只接收对象类型(Object)还比如范型就只支持对象类型例如往ArrayList里面add,必须add的是Object而int不是对象,就只能把Integer添加进去 2.初始化时>> int i =1; Integer i= new Integer(1);(要把
阅读全文