本节主要说明框架中实体类的关系,已经编写实体类的方式
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, 具有了逻辑删除的功能(如何实现后面讲解)
相关推荐
3. **Hibernate配置**:理解并配置Hibernate的配置文件(如hibernate.cfg.xml),包括数据库连接信息、实体类映射等,是实现数据持久化的关键步骤。 4. **接口与实现**:项目中定义了ForumDao接口,包含savaUser...
- 模型类编写:定义User和UserDTO类,以及可能的Theme类,完成数据封装。 4. **系统部署与调试**:将项目部署到Tomcat服务器上,通过浏览器输入URL进行客户端请求,测试各个功能模块是否正常工作。对于出现的错误...
- 使用Hibernate进行ORM,编写实体类、配置映射文件,实现DAO(数据访问对象)接口,以完成对数据库中文章信息的读取、更新操作。 6. **业务逻辑层**: - 设计并实现Service接口及其实现类,封装修改文章的操作,...
4. **测试Spring框架的基本开发环境**:这涉及到编写单元测试和集成测试,验证Spring配置是否正确,以及业务逻辑是否按预期工作。 实训的具体步骤如下: 1. **理解项目需求**:这是任何开发工作的起点,确保清楚地...
接下来,实训步骤涉及使用Spring框架搭建开发环境。Spring是JavaEE开发中的核心框架,它提供了依赖注入、面向切面编程等特性,简化了企业级应用的开发。学生需要创建一个实体类`Reponse`,并为其编写对应的映射文件...
学生需要理解实体类的创建,配置Hibernate的主配置文件(hibernate.cfg.xml)和映射文件(.hbm.xml),并学会使用Session接口进行数据的CRUD操作。 ### 二、项目实施流程 1. **需求理解**:首先,学生需要仔细阅读...
3. **实现查询操作的业务逻辑控制层**:在Struts2框架下,编写Action类,封装用户请求,调用Service接口进行查询操作,并将结果返回给视图层展示。 4. **在配置文件中管理各层文件**:更新Struts2的struts.xml、...
- **持久层实现**:利用Hibernate进行数据库操作,学生需要创建对应的实体类(Entity),映射到数据库表,并编写DAO(Data Access Object)接口及其实现,用于添加新文章到数据库。 - **业务逻辑层实现**:在...
在实体类的设计上,学生需要定义一个`Topic`类,包含对应的属性并提供set和get方法。此外,还需要为`User`类建立一对一的映射关系,这在`Topic.hbm.xml`映射文件中完成。这种映射配置允许在操作Topic时,同时也处理...
在实际项目中,J2EE框架的搭建通常涉及以下步骤: 1. 安装并配置开发环境,如JDK、IDE(如Eclipse或IntelliJ IDEA)、Tomcat服务器等。 2. 引入SSH框架的库文件,可以通过Maven或Gradle等构建工具管理依赖。 3. 配置...
4. **配置Hibernate**:引入Hibernate的JAR包,配置`hibernate.cfg.xml`文件,包括数据库连接信息、实体类映射和会话工厂设置。同时,可以使用Spring的HibernateTemplate或SessionFactoryBean来整合Spring和...
6. **配置Hibernate**:编写hibernate.cfg.xml,定义数据库连接参数、实体类映射和缓存策略。 7. **实体类与映射文件**:创建Java对象表示数据库表,编写对应的Hibernate映射文件(hbm.xml)或使用注解进行映射。 8....
接下来,课程将重点讲授J2EE开发环境的搭建,包括JDK、Eclipse和JBoss的安装与配置,以及如何创建和部署一个简单的Hello World程序,从而让学生快速入门J2EE开发。 在J2EE的关键技术中,Servlet编程占据了举足轻重...
【基于MyEclipse的SSH框架搭建步骤】 1. 创建Java Web项目:在MyEclipse中,选择"New -> Dynamic Web Project",设定项目名称和J2EE版本。 2. 添加Hibernate支持: - 切换到"MyEclipse Hibernate"透视图,创建...
- hbm2java工具用于根据Hibernate的XML映射文件自动生成Java实体类。 **3.8 分页显示的实现** - **3.8 分页显示的实现** - 实现分页查询,提高用户体验。 **3.9 小结** - 本章介绍了Hibernate框架的基础知识和...
在本案例中,开发者会了解到如何创建Hibernate的映射文件(hbm.xml),编写实体类,以及使用SessionFactory和Session接口进行数据库交互。 最后,Spring框架作为一个全面的后端解决方案,不仅提供依赖注入(DI)和...
- hbm2java工具可以将Hibernate映射文件转换为对应的Java实体类。 **3.8 分页显示的实现** - **3.8 分页显示的实现** - Hibernate提供了分页查询的支持,可以通过设置查询参数来实现分页。 #### 第四章 企业...
《轻量级J2EE企业应用实践:Struts+Spring+Hibernate整合开发》是一本深入讲解如何在J2EE环境中采用轻量级框架进行企业级应用开发的书籍。SSH(Struts、Spring、Hibernate)是Java开发中的经典组合,它们分别负责MVC...
### J2EE应用开发基础知识点概述 #### Java与EJB基础知识及J2EE的应用部署 - **Java编程语言** - **定义与特点**:Java是一种面向对象的、跨平台的编程语言,由Sun Microsystems公司于1995年发布。它的设计目标是...
3. **MyBatis Plus** 的使用,例如如何配置全局规则、实体类的自动填充策略、动态SQL的构建以及一键生成代码的功能。 4. **Kisso** 的集成,理解JWT和OAuth2的认证流程,如何设置权限控制,以及如何在Spring Boot中...