1. 用户实体管理的增删改查总结
增加、查询、删除操作都和单独操作单表的操作一样,所以可以放心使用JPA接口去操作。
不同1:更新用户本实体信息,首先先将原实体的关联实体集合查询出来,放到临时变量中,之后赋值给欲更新的对象,最后调用更新接口更新主实体,保证主实体与关联实体的关系。
代码如下:
//找到原始数据
UxAdmin uxAdminOld = uxAdminDao.findById(id);
//关联对象----角色
Set<UxRole> roleOld = uxAdminOld.getRoles();
//重新赋值
uxAdmin.setRoles(roleOld);
//更新
uxAdminDao.update(uxAdmin);
|
不同2:重新更新用户与角色的关联关系,此功能是从用户实体发起的,以用户作为主实体,角色作为从属实体。就直接将新的从属实体集合从数据库查询出来,对主实体赋其值,之后更新就好了,如果没有更新的对象,设置为null即可,表示没有任何的角色与该用户关联,用户没有任何角色。
代码如下:
//查出用户
uxAdmin = uxAdminDao.findById(id);
if("".equalsIgnoreCase(roleIds)){
//设置新的角色
uxAdmin.setRoles(null);
}else{
//查出备选的角色集合
Set<UxRole> roles = uxRoleDao.findByIdsForJPQL(roleIds);
//设置新的角色
uxAdmin.setRoles(roles);
}
//更新操作
uxAdminDao.update(uxAdmin);
|
2. 菜单实体管理的增删改查总结
从类图就可以看得出来,用户实体与菜单实体差不多。所以操作也大同小异。
查询、增加、删除操作和单实体操作没什么分别。直接操作即可,关键就是更新记录,和用户实体一样。先将关联集合实体查询出来放到临时变量中,之后给目标更新实体赋值、再调用更新接口更新实体。
代码如下:
UxSysMenu uxSysMenuOld = uxSysMenuDao.findById(uxSysMenu.getImenuid());
//保持原有的角色与菜单的关系
uxSysMenu.setUxRoles(uxSysMenuOld.getUxRoles());
//更新菜单
uxSysMenuDao.update(uxSysMenu);
|
3. 角色实体管理增删改查总结
在角色管理中依然是更新操作区别于其他操作
不同1:单实体信息更新
//查找一个角色对象
UxRole uxRoleOld = uxRoleDao.findById(roleId);
//获得旧菜单
Set<UxSysMenu> menuOlds = uxRoleOld.getMenus();
//获得旧人员
Set<UxAdmin> adminOlds = uxRoleOld.getUxAdmins();
uxRole.setMenus(menuOlds);
uxRole.setUxAdmins(adminOlds);
uxRole.setId(roleId);
//更新
uxRoleDao.update(uxRole);
|
可以看出也是先将角色关联的菜单集合、用户集合都临时记住,之后再更新主实体。保证关系不会因为角色实体的更新而丢失。
不同2:更新角色的从属菜单关系
代码如下
UxRole role = uxRoleDao.findById(roleId);
String[] menuArray = menuIds.split(",");
Set<UxSysMenu> newMenus = new HashSet<UxSysMenu>();
// 遍历菜单id数组
for (String menuIdStr : menuArray) {
if (!"".equalsIgnoreCase(menuIdStr)
&& !"0".equalsIgnoreCase(menuIdStr)) {
UxSysMenu uxSysMenu = uxSysMenuDao.findById(Integer
.parseInt(menuIdStr));
newMenus.add(uxSysMenu);
}
}
// 设置新的菜单
role.setMenus(newMenus);
// 更新
uxRoleDao.update(role);
|
相当于对角色实体的菜单集合重新赋值后再更新。
分享到:
相关推荐
本篇笔记主要聚焦于JPA的关联映射,这是JPA中一个重要的概念,用于定义实体之间的关系。 关联映射允许我们将数据库中的表关系映射到Java对象的关联上。在Hibernate中,这些关系通常通过XML配置文件来定义,而在JPA...
### JPA学习笔记-EJB-02JPA属性注解 #### 一、引言 在上一篇文章中,我们简要介绍了Java Persistence API (JPA)的基础知识,包括它的基本部署和操作流程,从而让我们对JPA有了初步的认识。本文将继续深入探讨JPA的...
### JPA学习文档知识点概述 #### 1. JPA简介 - **定义**: JPA (Java Persistence API) 是由Sun官方提出的一种Java持久化规范,旨在简化Java应用程序中关系型数据库的操作过程。其核心目标是统一现有的ORM (Object-...
### JPA 学习笔记详解 #### 一、JPA 概述 Java Persistence API (JPA) 是 Sun 公司提出的一种 Java 持久层标准,它为 Java 开发者提供了一种对象关系映射 (ORM) 的工具来管理 Java 应用程序中的关系型数据。JPA ...
总结来说,本文档涵盖了Spring JPA的基础配置和使用方法,包括所需的依赖库、持久化配置文件`persistence.xml`的编写、实体类的定义以及实体间关系的映射。通过这些知识点的学习,可以更好地理解和掌握Spring JPA的...
### EJB学习笔记4:深入理解实体与JPA #### 实体的概念与作用 实体,在企业级Java开发中,特别是EJB(Enterprise JavaBeans)框架下,指的是具有持久化能力的POJO(Plain Old Java Object)类。不同于实体Bean...
在深入探讨《ejb学习笔记》这一主题之前,我们首先需要理解什么是EJB(Enterprise JavaBeans)。EJB是Java平台为企业级应用开发提供的一套组件模型,它属于J2EE(Java 2 Platform, Enterprise Edition)的一部分,...
EJB 3.0 版本引入了许多改进,简化了API,降低了学习曲线,使其更易于使用。 在MVC(模型-视图-控制器)架构中,EJB 主要用于开发业务层。它负责处理数据和业务逻辑,而视图层则展示数据,控制器则协调视图和模型...
**EJB3.0 学习笔记** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重大更新,引入了许多改进,使得开发过程更为简化,降低了...
7. **JPA(Java Persistence API)**:JPA是Java标准的持久化框架,简化了对象关系映射,使得Java对象可以直接与数据库进行交互。 8. **JSF(JavaServer Faces)**:JSF是一种MVC(Model-View-Controller)框架,...
在Java EE 5及更高版本中,JPA(Java Persistence API)取代了传统的实体bean,提供了更灵活的ORM(对象关系映射)。 - **消息驱动bean(Message-Driven Beans)**:用于处理JMS(Java Message Service)消息,提供...
4. **并发控制**:EJB容器管理多个客户端对组件的并发访问,避免数据冲突。 5. **生命周期管理**:EJB容器负责Bean的创建、初始化、激活、钝化、销毁等过程,开发者只需关注业务逻辑。 6. **资源注入**:通过依赖...
本学习笔记涵盖了JavaEE的核心技术,帮助学习者深入理解和掌握javaweb的各项技能。 1. **Servlet与JSP** - **Servlet**:Servlet是Java编写的服务器端程序,主要用于扩展服务器的功能。在JavaEE中,Servlet处理...
在"达内培训的ejb课程笔记"中,学习者可能涵盖了以下内容: 1. EJB的基础概念和架构。 2. 如何创建和部署EJB组件,包括编写bean的类、接口、XML配置文件等。 3. EJB的生命周期管理,包括实例化、初始化、激活、钝化...
### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...
2. **实体Bean的简化**:EJB3.0引入了JPA(Java Persistence API),这使得实体Bean的处理更加简单,开发者可以通过注解直接将Java类映射到数据库表,而无需编写繁琐的DAO层代码。 3. **无容器依赖的POJOs**:EJB...