`
确实比较男
  • 浏览: 115623 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

J2EE开发框架搭建(4) - 实体类编写

阅读更多

本节主要说明框架中实体类的关系,已经编写实体类的方式

1. 框架中实体类的目录结构

2. 打开AbstractEntity查看代码:

 

package com.hqhop.framework.common.entity;

import java.io.Serializable;

/**
 * 抽象实体基类,如果主键是数据库端自动生成
 */
public abstract class AbstractEntity<ID extends Serializable> implements Serializable {
	public abstract ID getId();
	public abstract void setId(final ID id);
	public boolean isNew() {
		return null == getId();
	}
	@Override
	public boolean equals(Object obj) {
		if (null == obj) {
			return false;
		}
		if (this == obj) {
			return true;
		}
		if (!getClass().equals(obj.getClass())) {
			return false;
		}
		AbstractEntity<?> that = (AbstractEntity<?>) obj;
		return null == this.getId() ? false : this.getId().equals(that.getId());
	}

	@Override
	public int hashCode() {
		int hashCode = 17;
		hashCode += null == getId() ? 0 : getId().hashCode() * 31;
		return hashCode;
	}
}

这类重写了equals,hashCode方法,通过实体类的id值来判断两个实体是否相等;AbstractEntity有一个泛型ID, 这个ID表示实体类id的类型;接下来看下AbstractEntity的实现类:

 

 

<pre name="code" class="java">@MappedSuperclass
public abstract class BaseEntity extends AbstractEntity<String> {

	@Id
	@GeneratedValue(generator = "uuidGen")
	@GenericGenerator(name = "uuidGen", strategy = "uuid")
	private String id;

	@Override
	public String getId() {
		return id;
	}

	@Override
	public void setId(String id) {
		this.id = id;
	}
}

在BaseEntity中配置了Id的生成策略,我这里使用的是uuid,所以在类声明的时候指定了AbstractEntity的ID为String , 这里的@MappedSuperclass也是必须的 ,否则在hibernate自动建表的时候会有问题

3. 接下来再看下实现逻辑删除的接口LogicDeleteable(也就是说我们不从数据库中删除数据,只是把数据标示为删除),类似的还提供了Movable(调整数据排序的接口),Stateable(状态接口),Treeable(树行结构,如:菜单)

 

package com.hqhop.framework.common.entity;

/**
 * 实体实现该接口表示想要逻辑删除 为了简化开发 约定删除标识列名为deleted
 */
public interface LogicDeleteable {
	public Boolean getDeleted();
	public void setDeleted(Boolean deleted);
	/**
	 * 标识为已删除
	 */
	public void markDeleted();
}

4. 如何使用这些基本的接口、实体类,建立User实体类:

package com.hqhop.framework.shiro.entity;

// import ....

@Entity
@DynamicUpdate(true)
@DynamicInsert(true)
@Table(name = "t_base_user")
public class User <span style="color:#ff0000;">extends BaseEntity implements LogicDeleteable</span> {
	private String name;
	private String password;
	private int age;
	private int sex;
	private String identityCard;
	private String phoneNum;
	/**
	 * 职工号
	 */
	private String empNum;
	<span style="color:#ff0000;">/**
	 * 逻辑删除flag
	 */
	private Boolean deleted = Boolean.FALSE;</span>
	/**
	 * 系统用户的状态
	 */
	@Enumerated(EnumType.STRING)
	private UserStatus status = UserStatus.normal;

	@Column(name = "department_id")
	private String departmentId;

	<span style="color:#ff0000;">@Override
	public Boolean getDeleted() {
		return this.deleted;
	}
	@Override
	public void setDeleted(Boolean deleted) {
		this.deleted = deleted;
	}
	@Override
	public void markDeleted() {
		this.deleted = Boolean.TRUE;
	}</span>
	//get set ....

}

这样User 就已经有id的属性了,生成策略为uuid, 具有了逻辑删除的功能(如何实现后面讲解)


 

分享到:
评论

相关推荐

    J2EE企业级项目开发-1期 任务2-1 实训项目单.doc

    3. **Hibernate配置**:理解并配置Hibernate的配置文件(如hibernate.cfg.xml),包括数据库连接信息、实体类映射等,是实现数据持久化的关键步骤。 4. **接口与实现**:项目中定义了ForumDao接口,包含savaUser...

    J2EE企业级项目开发-1期 任务1-2 实训项目单(三).doc

    - 模型类编写:定义User和UserDTO类,以及可能的Theme类,完成数据封装。 4. **系统部署与调试**:将项目部署到Tomcat服务器上,通过浏览器输入URL进行客户端请求,测试各个功能模块是否正常工作。对于出现的错误...

    J2EE企业级项目开发-1期 任务3-7 修改操作的实现.doc

    - 使用Hibernate进行ORM,编写实体类、配置映射文件,实现DAO(数据访问对象)接口,以完成对数据库中文章信息的读取、更新操作。 6. **业务逻辑层**: - 设计并实现Service接口及其实现类,封装修改文章的操作,...

    J2EE企业级项目开发-1期 任务3-1 实训项目单.doc

    4. **测试Spring框架的基本开发环境**:这涉及到编写单元测试和集成测试,验证Spring配置是否正确,以及业务逻辑是否按预期工作。 实训的具体步骤如下: 1. **理解项目需求**:这是任何开发工作的起点,确保清楚地...

    J2EE企业级项目开发-1期 任务2-3 实训项目单.doc

    接下来,实训步骤涉及使用Spring框架搭建开发环境。Spring是JavaEE开发中的核心框架,它提供了依赖注入、面向切面编程等特性,简化了企业级应用的开发。学生需要创建一个实体类`Reponse`,并为其编写对应的映射文件...

    J2EE企业级项目开发-1期 任务3-4 实训项目单.doc

    学生需要理解实体类的创建,配置Hibernate的主配置文件(hibernate.cfg.xml)和映射文件(.hbm.xml),并学会使用Session接口进行数据的CRUD操作。 ### 二、项目实施流程 1. **需求理解**:首先,学生需要仔细阅读...

    J2EE企业级项目开发-1期 任务3-6 实训项目单.doc

    3. **实现查询操作的业务逻辑控制层**:在Struts2框架下,编写Action类,封装用户请求,调用Service接口进行查询操作,并将结果返回给视图层展示。 4. **在配置文件中管理各层文件**:更新Struts2的struts.xml、...

    J2EE企业级项目开发-1期 任务3-5 实训项目单.doc

    - **持久层实现**:利用Hibernate进行数据库操作,学生需要创建对应的实体类(Entity),映射到数据库表,并编写DAO(Data Access Object)接口及其实现,用于添加新文章到数据库。 - **业务逻辑层实现**:在...

    J2EE企业级项目开发-1期 任务2-2 实训项目单.doc

    在实体类的设计上,学生需要定义一个`Topic`类,包含对应的属性并提供set和get方法。此外,还需要为`User`类建立一对一的映射关系,这在`Topic.hbm.xml`映射文件中完成。这种映射配置允许在操作Topic时,同时也处理...

    框架的搭建J2EE

    在实际项目中,J2EE框架的搭建通常涉及以下步骤: 1. 安装并配置开发环境,如JDK、IDE(如Eclipse或IntelliJ IDEA)、Tomcat服务器等。 2. 引入SSH框架的库文件,可以通过Maven或Gradle等构建工具管理依赖。 3. 配置...

    J2EE开发ss2h框架JAR包整合

    4. **配置Hibernate**:引入Hibernate的JAR包,配置`hibernate.cfg.xml`文件,包括数据库连接信息、实体类映射和会话工厂设置。同时,可以使用Spring的HibernateTemplate或SessionFactoryBean来整合Spring和...

    j2ee ssh 框架整合

    6. **配置Hibernate**:编写hibernate.cfg.xml,定义数据库连接参数、实体类映射和缓存策略。 7. **实体类与映射文件**:创建Java对象表示数据库表,编写对应的Hibernate映射文件(hbm.xml)或使用注解进行映射。 8....

    «J2EE开发平台及程序设计»课程教学大纲

    接下来,课程将重点讲授J2EE开发环境的搭建,包括JDK、Eclipse和JBoss的安装与配置,以及如何创建和部署一个简单的Hello World程序,从而让学生快速入门J2EE开发。 在J2EE的关键技术中,Servlet编程占据了举足轻重...

    基于MyEclipse的SSH框架搭建

    【基于MyEclipse的SSH框架搭建步骤】 1. 创建Java Web项目:在MyEclipse中,选择"New -&gt; Dynamic Web Project",设定项目名称和J2EE版本。 2. 添加Hibernate支持: - 切换到"MyEclipse Hibernate"透视图,创建...

    J2EE电子商务系统开发从入门到精通

    - hbm2java工具用于根据Hibernate的XML映射文件自动生成Java实体类。 **3.8 分页显示的实现** - **3.8 分页显示的实现** - 实现分页查询,提高用户体验。 **3.9 小结** - 本章介绍了Hibernate框架的基础知识和...

    精通J2EE--ECLIPSE、STRUTS、HIBERNATE及SPRING整合应用案例代码-ch06-2

    在本案例中,开发者会了解到如何创建Hibernate的映射文件(hbm.xml),编写实体类,以及使用SessionFactory和Session接口进行数据库交互。 最后,Spring框架作为一个全面的后端解决方案,不仅提供依赖注入(DI)和...

    J2EE电子商务系统开发从入门到精通--基于Struts和Hibernate技术实现

    - hbm2java工具可以将Hibernate映射文件转换为对应的Java实体类。 **3.8 分页显示的实现** - **3.8 分页显示的实现** - Hibernate提供了分页查询的支持,可以通过设置查询参数来实现分页。 #### 第四章 企业...

    《轻量级J2EE企业应用实践-tructs+sping+hibernate整合开发》10

    《轻量级J2EE企业应用实践:Struts+Spring+Hibernate整合开发》是一本深入讲解如何在J2EE环境中采用轻量级框架进行企业级应用开发的书籍。SSH(Struts、Spring、Hibernate)是Java开发中的经典组合,它们分别负责MVC...

    J2EE应用开发基础

    ### J2EE应用开发基础知识点概述 #### Java与EJB基础知识及J2EE的应用部署 - **Java编程语言** - **定义与特点**:Java是一种面向对象的、跨平台的编程语言,由Sun Microsystems公司于1995年发布。它的设计目标是...

    Java EE(J2EE)快速开发框架, SSM 架构 mybatis-plus kisso 实战项目.zip

    3. **MyBatis Plus** 的使用,例如如何配置全局规则、实体类的自动填充策略、动态SQL的构建以及一键生成代码的功能。 4. **Kisso** 的集成,理解JWT和OAuth2的认证流程,如何设置权限控制,以及如何在Spring Boot中...

Global site tag (gtag.js) - Google Analytics