实战3--设计实体, 映射实体

1. Privilege.java

package cn.itcast.oa.domain;

import java.util.HashSet;
import java.util.Set;

public class Privilege {
	private Long id;
	private String name;  //权限名称
	private String url;
	private Set<Role> roles = new HashSet<Role>();
	private Privilege parent;  //上级权限
	private Set<Privilege> children = new HashSet<Privilege>(); //下级权限

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Set<Role> getRoles() {
		return roles;
	}
	public void setRoles(Set<Role> roles) {
		this.roles = roles;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Privilege getParent() {
		return parent;
	}
	public void setParent(Privilege parent) {
		this.parent = parent;
	}
	public Set<Privilege> getChildren() {
		return children;
	}
	public void setChildren(Set<Privilege> children) {
		this.children = children;
	}
}

2. Privilege.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.itcast.oa.domain">
	<class name="Privilege" table="itcast_privilege">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="name" />
		<property name="url" />
		<!-- roles属性, 本类与Role的 多对多 -->
		<set name="roles" table="itcast_role_privilege">
			<key column="privilegeId"></key>
			<many-to-many class="Role" column="roleId"></many-to-many>
		</set>
		<!-- parent属性, 本类与Privilege上级的多对一 -->
		<many-to-one name="parent" class="Privilege" column="parentId"></many-to-one>
		<!-- children属性, 本类与下级Privilege的一对多 -->
		<set name="children" cascade="delete" order-by="id asc">
			<key column="parentId"></key>
			<one-to-many class="Privilege"/>
		</set>
	</class>

</hibernate-mapping>

3. 更新role.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.itcast.oa.domain">
	<class name="Role" table="itcast_role">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="name" />
		<property name="description" />
		<!-- users属性, 本类与User的 多对多 -->
		<set name="users" table="itcast_user_role">
			<key column="roleId"></key>
			<many-to-many class="User" column="userId"></many-to-many>
		</set>
		<!-- privileges属性, 本类与Privilege的 多对多 -->
		<set name="privileges" table="itcast_role_privilege">
			<key column="roleId"></key>
			<many-to-many class="Privilege" column="privilegeId"></many-to-many>
		</set>
	</class>

</hibernate-mapping>

4. 更新hibernate.cfg.xml

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

	<session-factory>

		<!-- Database connection settings -->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
			<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
			<property name="connection.username">root</property> <property name="connection.password">bjsxt</property> -->

		<!-- 2. other configuration -->
		<property name="show_sql">true</property>
		<property name="hbm2ddl.auto">update</property>
		<property name="connection.pool_size">1</property>

		<!--3. mapping -->
		<mapping resource="cn/itcast/oa/domain/User.hbm.xml" />
		<mapping resource="cn/itcast/oa/domain/Role.hbm.xml" />
		<mapping resource="cn/itcast/oa/domain/Department.hbm.xml" />
		<mapping resource="cn/itcast/oa/domain/Privilege.hbm.xml" />
	</session-factory>

</hibernate-configuration>

  

时间: 2024-09-10 19:46:47

实战3--设计实体, 映射实体的相关文章

权限模块_整体方案说明_设计实体&amp;映射实体_实现初始化权限数据的功能

权限模块_整体方案说明 要点说明 权限就是控制功能的使用(功能对应着URL). 对功能的控制就是对URL的访问控制. 在我们的程序中,一个功能对应一个或两个URL: 1,例如列表或删除功能,只对应一个URL. 2,例如添加或修改功能,对应两个URL:..add, ..addUI 权限模型 权限方案: 用户 *----* 角色 *----* 权限 与权限相关的功能具体有哪些: 初始化数据:... 分配权限:... 使用权限:... 具体有哪些功能 初始化数据(安装) 权限数据. 超级管理员. 分配

论坛模块_设计及映射本模块的所有实体

论坛模块_设计本模块的所有实体 实体有几个,有什么关系,属性:主键.关联关系属性.一般属性.特殊属性(解决某个问题而设计[排序]),最后在看一遍设计的属性能满足这个页面和那个页面吗 主题数和文章数在Forum实体中新增topicCount和articleCount两个属性发帖删帖对应加1减一,把它当做普通的属性显示就没有效率性能的问题了,因为查询的操作远远多于发删帖,查询的数据很多 最后发表的主题也在Forum中设计lastTopic属性,只要发新主题了把这个属性改一下 主题的标题.内容时间.作

EF Code First:实体映射,数据迁移,重构(1)

一.前言 经过EF的<第一篇>,我们已经把数据访问层基本搭建起来了,但并没有涉及实体关系.实体关系对于一个数据库系统来说至关重要,而且EF的各个实体之间的联系,实体之间的协作,联合查询等也都依赖于这些实体关系. 二.实体映射 实体与数据库的映射可以通过DataAnnotation与FluentAPI两种方式来进行映射: (一) DataAnnotation DataAnnotation 特性由.NET 3.5中引进,给.NET中的类提供了一种添加验证的方式.DataAnnotation由命名空

ASP.NET Core搭建多层网站架构【4.1-网站数据库实体设计及映射配置】

2020/01/28, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[4.1-网站数据库实体设计及映射配置] 文章目录 此分支项目代码 本章节介绍后台管理的网站数据库实体设计 需求分析 首先要实现的功能有用户登录.角色管理.日志记录 大概有四张表:用户表.密码表.角色表.日志表 日志表: 用户表: 密码表: 角色表: 好像博客园md不支持表格功能?所以只能截图展示,excel表格上传至项目docs文件夹中 字段设计

EntityFrameWork实体映射

在ORM的实体框架中多为继承,关联等 在Hibernater中关联的实体,需要配置 xml文件来维护不同实体的关系 而在EF中这这是通过可视化的图形操作来控制之间的关系的:如下图 关联映射 如已经通过PowerDeesigner画好了实体间的关系 ,实体关系在转成物理模型导入数据库.通过EF的model模型从数据库导入图2 选择好数据库,选择好实体框架,注意这里的框架是和Framework对应的 重点来了 我们看到 有(在模型中包括外键列)若选择该列,这就会在有关联关系的实体中添加外键列.则在添

hibernate的实体映射(一对一)

Hibernate的实体映射的主要任务就是实现数据库关系表与持久化类之间的映射,其关系如图: 双向映射一对一关联关系,通过唯一外键方式进行一对一关联映射,就是一个表的外键和另一个表的唯一主键对应形成一对一映射关系. 例如,以下例子,社团与社团负责人(社长),两者之间是一对一的关联关系: 持久化类association.java: public class Association implements java.io.Serializable{     private Integer id;   

使用Fluent API进行实体映射【Code-First系列】

现在,我们来学习怎么使用Fluent API来配置实体. 一.配置默认的数据表Schema Student实体 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EF4 { public class Student { public int StudentID { get; set; } publ

Hibernate(三)结构-配置文件-实体映射及配置文件

一.体系结构 SessionFactory:属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照.Session的工厂.有可能持有一个可选的数据缓存可以进程级别或者群级别保存可以在事务中重用数据. 会话,Session:单线程,生命期短促的对象,代表应用程序和持久化层之间的一次对话.封装了一个JDDBC连接,它也是Transaction的工厂,保存有必须持久化对象的缓存,用于遍历对象,或者通过标识符查找对象. 持久化对象(Persistent Object)及其集合(Collect

实体映射基础

一个普通的POJO类通过标注@Entity可以映射成为可持久化的类,可持久化的类可以对应数据库中的数据.映射成为实体类要依赖一些特定的规则. 1.映射实体 (@Entity)标注为@Entity注释的类,表示该类是一个可持久化的类,当在容器中时,服务器将会首先加载所有标注了@Entity注释的实体类,例如: ? 1 2 3 4 5 6 @Entity public class ContaceEO {    ...    ContactEO() {...}    ... } @Entity注释的定