1.用户类User对应组织机构中的类Person:使用了一对一唯一外键双向关联映射
2.访问控制列表ACL与User,Role,Module所关联:而Module使用了一对多双向关联映射
3.用户User和角色Role相互关联:user和Role使用了多对多双向映射
4.在模型类中加上@注解
5.运行Ant脚本:build.xml
<?xml version="1.0" encoding="GBK"?>
<project name="OA系统构建脚本" default="生成Hibernate配置文件" basedir=".">
<property name="src.dir" value="${basedir}/"/>
<property name="build.dir" value="${basedir}/bin"/>
<property name="xdoclet.home" value="D:/代码库/BJSXT/xdoclet-plugins-1.0.3"/>
<!-- Build classpath -->
<path id="xdoclet.task.classpath">
<fileset dir="${xdoclet.home}/lib">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${xdoclet.home}/plugins">
<include name="**/*.jar"/>
</fileset>
</path>
<taskdef
name="xdoclet"
classname="org.xdoclet.ant.XDocletTask"
classpathref="xdoclet.task.classpath"
/>
<target name="生成Hibernate配置文件">
<xdoclet>
<fileset dir="${src.dir}/com/wlh/oa/model">
<include name="**/*.java"/>
</fileset>
<component
classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin"
destdir="${src.dir}"
version="3.0"
hbm2ddlauto="update"
jdbcurl="jdbc:mysql://127.0.0.1/oa"
jdbcdriver="com.mysql.jdbc.Driver"
jdbcusername="root"
jdbcpassword="bjsxt"
dialect="org.hibernate.dialect.MySQLDialect"
showsql="true"
/>
</xdoclet>
</target>
<target name="生成hibernate映射文件">
<xdoclet>
<fileset dir="${src.dir}/com/wlh/oa/model">
<include name="**/*.java"/>
</fileset>
<component
classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
version="3.0"
destdir="${src.dir}"
/>
</xdoclet>
</target>
</project>
package com.wlh.oa.model;
import java.util.Date;
/**
*
* @author Administrator
* @hibernate.class table="T_User"
*/
public class User {
/**
* @hibernate.id
* generator-class="native"
*/
private int id;
/**
* @hibernate.property
* unique="true"
* not-null="true"
*/
private String username;
/**
* @hibernate.property
* not-null="true"
*/
private String password;
/**
* @hibernate.property
*/
private Date createTime;
/**
* @hibernate.property
*/
private Date expireTime;
/**
* @hibernate.many-to-one unique="true"
*/
private Person person;
}
package com.wlh.oa.model;
/**
*
* @author Administrator
* @hibernate.class table="T_Role"
*/
public class Role {
/**
* @hibernate.id
* generator-class="native"
*/
private int id;
/**
* @hibernate.property
*/
private String name;
}
package com.wlh.oa.model;
/**
*
* @author Administrator
* @hibernate.class table="T_UsersRoles"
*/
public class UsersRoles {
/**
* @hibernate.id generator-class="native"
*/
private int id;
/**
* @hibernate.many-to-one
*/
private Role role;
/**
* @hibernate.many-to-one
*/
private User user;
/**
* @hibernate.property
*/
private int orderNo;
}
package com.wlh.oa.model;
import java.util.Set;
/**
*
* @author Administrator
* @hibernate.class table="T_Module"
*/
public class Module {
/**
* @hibernate.id
* generator-class="native"
*/
private int id;
/**
* @hibernate.property
*/
private String name;
/**
* @hibernate.property
*/
private String url;
/**
* @hibernate.property
*/
private int orderNo;
/**
* @hibernate.property
*/
private String sn;
/**
* @hibernate.many-to-one column="pid"
*/
private Module parent;
/**
* @hibernate.set lazy="extra" inverse="true"
* @hibernate.key column="pid"
* @hibernate.one-to-many class="com.bjsxt.oa.model.Module"
*/
private Set children;
}
package com.wlh.oa.model;
/**
*
* @author Administrator
* @hibernate.class table="T_ACL"
*/
public class ACL {
public static final String TYPE_ROLE = "Role";
public static final String TYPE_USER = "User";
/**
* @hibernate.id generator-class="native"
*/
private int id;
/**
* @hibernate.property
*/
private String principalType;
/**
* @hibernate.property
*/
private int principalId;
/**
* @hibernate.property
*/
private int moduleId;
/**
* @hibernate.property
*/
private int aclState;
/**
* @hibernate.property
*/
private int aclTriState;
/**
* ACL的状态为继承(即无效,判断的时候应该判断其所属角色的授权)
*/
public static final int ACL_TRI_STATE_EXTENDS = 0xFFFFFFFF;
/**
* ACL的状态为不继承(即有效,判断的时候,直接根据aclState判断授权)
*/
public static final int ACL_TRI_STATE_UNEXTENDS = 0;
/**
* 授权允许
*/
public static final int ACL_YES = 1;
/**
* 授权不允许
*/
public static final int ACL_NO = 0;
/**
* 授权不确定
*/
public static final int ACL_NEUTRAL = -1;
public void setPermission(int permission,boolean yes){
int temp = 1;
temp = temp << permission;
if(yes){
aclState |= temp;
}else{
aclState &= ~temp;
}
}
public int getPermission(int permission){
if(aclTriState == ACL_TRI_STATE_EXTENDS){
return ACL_NEUTRAL;
}
int temp = 1;
temp = temp << permission;
temp &= aclState;
if(temp != 0){
return ACL_YES;
}
return ACL_NO;
}
/**
* 设置ACL的继承状态
* @param yes true标识继承,false表示不继承
*/
public void setExtends(boolean yes){
if(yes){
aclTriState = ACL_TRI_STATE_EXTENDS;
}else{
aclTriState = ACL_TRI_STATE_UNEXTENDS;
}
}
}
分享到:
相关推荐
《使用Hibernate和XDoclet生成映射文件与SQL语句详解》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,为了实现对象与数据库表之间的映射,我们需要编写XML映射...
### 使用Maven的Xdoclet插件生成Hibernate配置文件 #### 背景与目标 在软件开发过程中,特别是涉及到数据库交互的应用程序中,Hibernate作为一款流行的Java持久层框架,被广泛应用于对象关系映射(ORM)。而在使用...
4. 生成配置文件:使用 Xdoclet 生成对应的配置文件,如 Hibernate 映射文件。 Xdoclet 的优点 Xdoclet 有以下优点: * 自动生成配置文件:Xdoclet 可以根据 Java 代码生成对应的配置文件,减少手动编写配置文件...
随着Hibernate的发展,它推荐使用注解(Annotation)直接在Java类上进行ORM配置,取代了Xdoclet生成映射文件的方式。因此,尽管Xdoclet仍有一定的实用性,但在现代开发环境中,直接使用Hibernate注解已成为主流。 ...
下面通过一个具体的例子来说明如何使用 XDoclet 为 iBatis 自动生成 SQL 映射文件。示例代码如下: ```java package org.chage.pojo; import java.util.List; /** * @hibernate.class table="D_USER" * @...
XDoclet 是一款强大的Java注解处理工具,它允许开发者在Java源代码中添加元数据,这些元数据可以用来自动生成各种配置文件,包括Hibernate的映射文件(hbm.xml)。这种方式极大地提高了开发效率,避免了手动创建和...
【Hibernate配置文件中映射元素详解】 在对象关系映射(ORM)框架Hibernate中,对象与数据库表之间的关联是通过一个XML配置文件来定义的。这个XML文件包含了映射元素,用于描述Java类如何转化为数据库中的表。映射...
总结起来,这个例子展示了如何利用XDoclet插件从Java持久化类自动生成功能强大的Hibernate映射文件和数据库脚本,极大地简化了开发过程,提高了代码的可维护性。通过这种方式,开发者可以更专注于业务逻辑,而非重复...
在Hibernate3的上下文中,XDoclet2可以从类和接口的JavaDoc注释中提取信息,然后自动创建对应的Hibernate配置文件,如hibernate.cfg.xml和.hbm.xml文件,极大地提高了开发效率和准确性。 使用XDoclet2的步骤大致...
请把这个文件解压后方到一个盘下面.在build.xml中的 <property name="xdoclet.home" value="D:/jarpackage/xdoclet-plugins-1.0.3"/> 指出这个文件存放的位置....在构建域对象的时候一定要指明在配置文件中的配置信息..
1. **ORM映射文件生成**:使用Xdoclet可以根据Java实体类自动生成对应的ORM映射文件,例如Hibernate的`.hbm.xml`文件。 2. **Web服务文档**:对于复杂的Web服务接口,可以使用Xdoclet自动生成WSDL文件或其他相关的...
在Java类中,我们只需要添加适当的Javadoc注释,Xdoclet就会根据这些注释生成对应的.hbm.xml映射文件和Hibernate配置文件。而Ant则负责编译源代码、运行Xdoclet以及执行其他构建任务。 具体步骤如下: 1. **设置...
在使用Ant和XDoclet生成HBM文件的过程中,通常包含以下几个步骤: 1. **配置XDoclet插件**:在Ant的build.xml文件中,我们需要添加一个xdoclet任务。这通常涉及到引入xdoclet的JAR文件作为依赖,并配置任务参数,如...
* 自动生成 Hibernate 的映射文件 * 自动生成 Web.xml 文件 * 自动生成数据库的 DDL 文件 * 自动生成其他配置文件和数据文件 XDoclet 的优点包括: * 提高开发效率 * 减少代码重复 * 提高代码质量 * 提高开发灵活...
xdoclet是一款强大的Java文档注解处理器,它在Java源代码中通过特定的注解(annotations)来自动生成各种配置文件,极大地简化了开发过程,尤其是对于Hibernate等持久层框架的使用者。标题提到的"xdoclet 用于生成*....
Xdoclet 是一款开源工具,它允许开发者在 Java 源代码中使用特殊的 Javadoc 注释来生成各种元数据,例如 Java EE 应用服务器的部署描述符、Hibernate 映射文件等。这种方式使得代码与配置文件之间的耦合度降低,同时...
而Xdoclet则是用于自动生成Java源代码和配置文件的工具,它能够根据注释自动创建Hibernate所需的XML配置文件,比如`hibernate.cfg.xml`和`*.hbm.xml`。在早期,Xdoclet广泛用于简化Hibernate项目,避免手动编写大量...
它通过解析Java源代码中的Javadoc注释,自动生成各种文件,如部署描述符(Deployment Descriptor)、持久化映射文件(Hibernate Mapping Files)、EJB组件接口和服务端的类代码等。这款工具广泛应用于Java EE开发,...
- **Ant build文件**:编写Ant脚本以自动化生成映射文件及数据表。需将所需的JAR包放置在`WebRoot/WEB-INF/lib/`目录下。 - **执行命令**:在命令行中运行Ant脚本,完成映射文件和数据表的生成。 ##### 4. 反身关联...