1. dao层
以Hibernate为例
首先定义了一个类
java 代码
- public class HibernateGenericDao extends HibernateDaoSupport
HibernateGenericDao 具有CRUD等基本功能。
又定义了一个供所有实体对象对应的Service层继承的类:
java 代码
- HibernateEntityDao< T > extends HibernateGenericDao implements EntityDao< T >
这里用到了jdk5.0里的范型,当一个实体对象对应的Service层继承该类时,比如:
java 代码
- public class UserManager extends HibernateEntityDao < User >
会把User这个实体对象传递给HibernateEntityDao.
当UserManager被实例化时,首先会去调用其父类的构造函数,HibernateEntityDao的构造函数里的代码如下:
java 代码
- protected Class<t></t> entityClass;
-
-
-
-
- public HibernateEntityDao() {
- entityClass = GenericsUtils.getSuperClassGenricType(getClass());
- }
java 代码
- public static Class getSuperClassGenricType(Class clazz) {
- return getSuperClassGenricType(clazz, 0);
- }
java 代码
- public static Class getSuperClassGenricType(Class clazz, int index) {
-
-
-
- Type genType = clazz.getGenericSuperclass();
-
- if (!(genType instanceof ParameterizedType)) {
- log.warn(clazz.getSimpleName() + "'s superclass not ParameterizedType");
- return Object.class;
- }
-
- Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
-
- if (index >= params.length || index < 0) {
- log.warn("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: "
- + params.length);
- return Object.class;
- }
- if (!(params[index] instanceof Class)) {
- log.warn(clazz.getSimpleName() + " not set the actual class on superclass generic parameter");
- return Object.class;
- }
- return (Class) params[index];
- }
可以看到在HibernateEntityDao的构造函数里实例化了entityClass,得到了具体是哪个实体类对应的service层(Manager) 继承的这个HibernateEntityDao. 也就是具体的某个实体类的Class,在这里是User.class,HibernateEntityDao里对数据库的操作,用的都是entityClass,这样一来也就是操作这个实体对应的表了。CRUD基本的操作都可以不用写了。
分享到:
相关推荐
SpringSide 是一个基于 Spring Framework 的 Java 开发工具集,旨在简化 Spring 应用程序的开发过程,提供一套快速、现代且规范的开发实践。SpringSide 3.2.2 版本是一个成熟的版本,它在之前的版本基础上进行了优化...
SpringSide4参考手册是一份详尽的文档,涵盖了使用SpringSide4.0版本开发应用时可能会用到的各种技术组件和模块。SpringSide是一个开源的Java开发平台,它集成了Spring框架和大量实用的组件,以方便开发人员构建复杂...
1. **自动配置**:借鉴了Spring Boot的自动配置思想,SpringSide-core-4.1.0允许开发者通过简单的配置就能启动一个完整的应用环境。 2. **安全框架集成**:集成了Spring Security,提供了用户认证、授权等功能,...
1. **模块化设计**:springside采用模块化设计,将项目划分为多个独立的模块,如核心模块、安全模块、AOP模块等,使得代码结构清晰,易于维护和扩展。 2. **依赖管理**:springside使用Maven进行依赖管理,通过预...
1. **定义资源(Resources)**:确定API将暴露哪些资源,比如用户、文章等,每个资源对应一个URL路径。 2. **设计操作(Operations)**:为每个资源定义可执行的操作,如GET(获取)、POST(创建)、PUT(更新)和...
1. **模版项目**:SpringSide提供了一系列模版项目,覆盖了常见的Web应用、RESTful服务、命令行工具等多种应用场景。这些模版项目遵循Maven或Gradle构建系统,包含了完整的目录结构、配置文件和基础代码,极大地减少...
1. **Spring框架基础**:Spring是Java领域最著名的轻量级框架之一,它的核心特性包括依赖注入(DI)和面向切面编程(AOP)。SpringSide 3.0 基于Spring,使得开发者能更方便地管理对象间的依赖关系,减少代码耦合,...
1. **代码规范**:SpringSide遵循一系列编码和设计规范,帮助团队保持代码一致性,提升代码质量。 2. **自动化配置**:基于Spring的自动化配置,减少了手动配置的工作量,使开发者能更专注于业务逻辑。 3. **最佳...
#### 一、Springside简介 Springside项目是基于Spring框架的一个应用架构示例,它提供了一套完整的开发模式来构建企业级Java Web应用程序。Springside 3.3.4版本作为一个成熟的发布版,不仅集成了Spring框架的核心...
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
1. **模块化设计**:Springside项目将常用的功能模块化,如Core、Console、Test、Hibernate、Security等,便于开发者按需选择和集成,降低了项目的复杂性。 2. **配置管理**:Springside提供了一套统一的配置管理...
一、SpringSide3.3.4 安装部署准备 在开始安装部署 SpringSide3.3.4 之前,我们需要准备好相应的环境和工具。首先,我们需要安装 Java Development Kit(JDK),因为 SpringSide3.3.4 需要运行在 Java 平台上。其次...
1. **SpringSide项目介绍** SpringSide是一个面向实践的Java开发框架,它基于Spring Framework,旨在简化Spring应用的创建和维护。3.3版本是对该框架的一次重要更新,提供了更稳定的性能和更多的特性。 2. **...
1. **示例代码**:SpringSide提供了丰富的示例代码,涵盖了Spring MVC、Spring AOP、Spring JDBC、MyBatis、Hibernate等常见模块,帮助开发者理解如何在实际项目中运用这些技术。 2. **配置文件**:包括Spring的XML...
标题"Springside4 (showcase)"暗示了这是一个以展示SpringSide 4核心特性和功能为主的应用实例,而"描述"中的"Springside4"则进一步确认了我们正在探讨的是SpringSide 4框架。标签"springmvc"指出该示例着重于Spring...
1. Maven集成:SpringSide 4.1.0.GA全面支持Maven构建系统,使得项目管理和依赖管理变得更加规范和自动化。 2. Spring配置优化:此版本进一步优化了Spring的配置,引入了更多的自动配置和Java配置,降低了XML配置的...
在Java开发领域,springside.jar是一个备受推崇的开源项目,它为开发者提供了丰富的工具和最佳实践,以简化Spring框架的使用。本文将深入探讨springside.jar的核心功能,以及如何在实际项目中有效利用它。 一、...
springside3是一个基于Spring框架的轻量级Java开发工具集,它旨在简化企业级应用的开发过程,提供了一套完整的构建工具、最佳实践和代码示例。在本文中,我们将深入探讨springside3的核心特性、源码结构以及如何利用...
1. **SpringSide 3概述**: SpringSide 3 是由中国的Java社区开发的一个开源项目,它将Spring框架的最佳实践封装起来,为开发者提供了一种快速构建企业级应用的解决方案。该框架强调代码质量和开发效率,遵循Maven...