`
ttitfly
  • 浏览: 624003 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

springside笔记一

阅读更多

1. dao层

以Hibernate为例

首先定义了一个类

java 代码
  1. public class HibernateGenericDao extends HibernateDaoSupport   

HibernateGenericDao 具有CRUD等基本功能。

又定义了一个供所有实体对象对应的Service层继承的类:

java 代码
  1. HibernateEntityDao< T > extends HibernateGenericDao implements EntityDao< T >  

这里用到了jdk5.0里的范型,当一个实体对象对应的Service层继承该类时,比如:

java 代码
  1. public class UserManager extends HibernateEntityDao < User >  
会把User这个实体对象传递给HibernateEntityDao.

 当UserManager被实例化时,首先会去调用其父类的构造函数,HibernateEntityDao的构造函数里的代码如下:

java 代码
  1. protected Class<t></t> entityClass;// DAO所管理的Entity类型.   
  2.   
  3. /**  
  4. * 在构造函数中将泛型T.class赋给entityClass.  
  5. */  
  6. public HibernateEntityDao() {   
  7.     entityClass = GenericsUtils.getSuperClassGenricType(getClass());   
  8. }  

 

java 代码
  1. public static Class getSuperClassGenricType(Class clazz) {   
  2.         return getSuperClassGenricType(clazz, 0);   
  3.     }  
java 代码
  1. public static Class getSuperClassGenricType(Class clazz, int index) {   
  2.   
  3.         //返回表示此 Class 所表示的实体的直接超类的 Type,也就是extends的类。不包含implements的   
  4.         //Type是Class的父类   
  5.         Type genType = clazz.getGenericSuperclass();   
  6.   
  7.         if (!(genType instanceof ParameterizedType)) {   
  8.             log.warn(clazz.getSimpleName() + "'s superclass not ParameterizedType");   
  9.             return Object.class;   
  10.         }   
  11.         //返回表示此类型实际类型参数的 Type 对象的数组,数组里放的都是对应类型的Class   
  12.         Type[] params = ((ParameterizedType) genType).getActualTypeArguments();   
  13.   
  14.         if (index >= params.length || index < 0) {   
  15.             log.warn("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: "  
  16.                     + params.length);   
  17.             return Object.class;   
  18.         }   
  19.         if (!(params[index] instanceof Class)) {   
  20.             log.warn(clazz.getSimpleName() + " not set the actual class on superclass generic parameter");   
  21.             return Object.class;   
  22.         }   
  23.         return (Class) params[index];   
  24.     }  
可以看到在HibernateEntityDao的构造函数里实例化了entityClass,得到了具体是哪个实体类对应的service层(Manager) 继承的这个HibernateEntityDao. 也就是具体的某个实体类的Class,在这里是User.class,HibernateEntityDao里对数据库的操作,用的都是entityClass,这样一来也就是操作这个实体对应的表了。CRUD基本的操作都可以不用写了。
分享到:
评论
2 楼 ttitfly 2007-10-31  
引用
请问这句是什么意思?
if (!(genType instanceof ParameterizedType))

意思是说这个Type是否是属于ParameterizedType,
ParameterizedType 代表一个参数 type ,比如这样的:Collection<String>. 如果是的话,则可以通过getActualTypeArguments来获得参数类型
1 楼 kenbli 2007-10-31  
请问这句是什么意思?
if (!(genType instanceof ParameterizedType))

相关推荐

    springside-3.2.2源码

    SpringSide 是一个基于 Spring Framework 的 Java 开发工具集,旨在简化 Spring 应用程序的开发过程,提供一套快速、现代且规范的开发实践。SpringSide 3.2.2 版本是一个成熟的版本,它在之前的版本基础上进行了优化...

    SpringSide4 参考手册

    SpringSide4参考手册是一份详尽的文档,涵盖了使用SpringSide4.0版本开发应用时可能会用到的各种技术组件和模块。SpringSide是一个开源的Java开发平台,它集成了Spring框架和大量实用的组件,以方便开发人员构建复杂...

    Springside-core-4.1.0/Springside-core-4.1.0

    1. **自动配置**:借鉴了Spring Boot的自动配置思想,SpringSide-core-4.1.0允许开发者通过简单的配置就能启动一个完整的应用环境。 2. **安全框架集成**:集成了Spring Security,提供了用户认证、授权等功能,...

    springside开发全面讲解

    1. **模块化设计**:springside采用模块化设计,将项目划分为多个独立的模块,如核心模块、安全模块、AOP模块等,使得代码结构清晰,易于维护和扩展。 2. **依赖管理**:springside使用Maven进行依赖管理,通过预...

    springside的一个应用实例

    1. **定义资源(Resources)**:确定API将暴露哪些资源,比如用户、文章等,每个资源对应一个URL路径。 2. **设计操作(Operations)**:为每个资源定义可执行的操作,如GET(获取)、POST(创建)、PUT(更新)和...

    springside

    1. **模版项目**:SpringSide提供了一系列模版项目,覆盖了常见的Web应用、RESTful服务、命令行工具等多种应用场景。这些模版项目遵循Maven或Gradle构建系统,包含了完整的目录结构、配置文件和基础代码,极大地减少...

    springside3.0.zip

    1. **Spring框架基础**:Spring是Java领域最著名的轻量级框架之一,它的核心特性包括依赖注入(DI)和面向切面编程(AOP)。SpringSide 3.0 基于Spring,使得开发者能更方便地管理对象间的依赖关系,减少代码耦合,...

    有springside4.2.3-GA.jar 包

    1. **代码规范**:SpringSide遵循一系列编码和设计规范,帮助团队保持代码一致性,提升代码质量。 2. **自动化配置**:基于Spring的自动化配置,减少了手动配置的工作量,使开发者能更专注于业务逻辑。 3. **最佳...

    springside3.3.4 使用方法

    #### 一、Springside简介 Springside项目是基于Spring框架的一个应用架构示例,它提供了一套完整的开发模式来构建企业级Java Web应用程序。Springside 3.3.4版本作为一个成熟的发布版,不仅集成了Spring框架的核心...

    springside的jar包

    1. **模块化设计**:Springside项目将常用的功能模块化,如Core、Console、Test、Hibernate、Security等,便于开发者按需选择和集成,降低了项目的复杂性。 2. **配置管理**:Springside提供了一套统一的配置管理...

    springside-core-4.2.2.GA(含关联的test.jar)

    pom.xml配置 ...mvn install:install-file -DgroupId=org.springside -DartifactId=springside-core -Dversion=4.2.2.GA -Dfile=./springside-core-4.2.2.GA.jar -Dpackaging=jar -DgeneratePom=true

    SpringSide3.3.4安装部署

    一、SpringSide3.3.4 安装部署准备 在开始安装部署 SpringSide3.3.4 之前,我们需要准备好相应的环境和工具。首先,我们需要安装 Java Development Kit(JDK),因为 SpringSide3.3.4 需要运行在 Java 平台上。其次...

    springside3.3完整版

    1. **SpringSide项目介绍** SpringSide是一个面向实践的Java开发框架,它基于Spring Framework,旨在简化Spring应用的创建和维护。3.3版本是对该框架的一次重要更新,提供了更稳定的性能和更多的特性。 2. **...

    springside-4.0.0.GA.zip

    1. **示例代码**:SpringSide提供了丰富的示例代码,涵盖了Spring MVC、Spring AOP、Spring JDBC、MyBatis、Hibernate等常见模块,帮助开发者理解如何在实际项目中运用这些技术。 2. **配置文件**:包括Spring的XML...

    springside4(showcase)

    标题"Springside4 (showcase)"暗示了这是一个以展示SpringSide 4核心特性和功能为主的应用实例,而"描述"中的"Springside4"则进一步确认了我们正在探讨的是SpringSide 4框架。标签"springmvc"指出该示例着重于Spring...

    springside4-4.1.0.GA

    1. Maven集成:SpringSide 4.1.0.GA全面支持Maven构建系统,使得项目管理和依赖管理变得更加规范和自动化。 2. Spring配置优化:此版本进一步优化了Spring的配置,引入了更多的自动配置和Java配置,降低了XML配置的...

    springside.jar

    在Java开发领域,springside.jar是一个备受推崇的开源项目,它为开发者提供了丰富的工具和最佳实践,以简化Spring框架的使用。本文将深入探讨springside.jar的核心功能,以及如何在实际项目中有效利用它。 一、...

    springside3源码及jar

    springside3是一个基于Spring框架的轻量级Java开发工具集,它旨在简化企业级应用的开发过程,提供了一套完整的构建工具、最佳实践和代码示例。在本文中,我们将深入探讨springside3的核心特性、源码结构以及如何利用...

    springside3

    1. **SpringSide 3概述**: SpringSide 3 是由中国的Java社区开发的一个开源项目,它将Spring框架的最佳实践封装起来,为开发者提供了一种快速构建企业级应用的解决方案。该框架强调代码质量和开发效率,遵循Maven...

Global site tag (gtag.js) - Google Analytics