- 浏览: 1528991 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
http://blog.csdn.net/chenjyuj/archive/2007/04/11/1561342.aspx
XDoclet in Action 下载地址: http://www.infoxa.com/asp/book/xxnr.asp?id=1570
XDoclet实现基本原理是,通过在Java代码加入特定的JavaDoc
tag,从而为其添加特定
的附加语义,之后通过XDoclet工具对代码中JavaDoc
Tag进行分析,自动生成与代码对应
的配置文件,XDoclet。
血的教训,不要用 Key 当作变量名,不然无法自动生成数据库表。
table | 类对应的表名,默认值:当前类名 |
where | 数据甄选条件,如果只需要处理库表中某些特定数据的时候,可通过此选项设定结果集限定条件。 |
dynamic-update |
生成Update SQL时,仅包含发生变动的字段,默认值: false。dynamic-update="true"时,Update SQL 时候,只包括当前发生变化的字段(提高DB Update性能)。 |
dynamic-insert |
生成Insert SQL时,仅包含非空(null)字段,默认值:false。 dynamic-insert="true" 时,Insert SQL 时候,只包括当前非空字段。(提高DB Insert性能) |
discriminator-value | 子类辨别标识,用于多态支持。 discriminator-value="1" discriminator-value 参数的目的是对多态提供支持。请参见下面关于@hibernate.discriminator的说明。 |
Proxy | 代理类,默认值:空。 proxy="" 表明当前类不使用代理(Proxy)。代理类的作用是为Lazy.Loading提供支持 |
lazy | Specifies the class itself to use for CGLIB proxy interface 默认:false lazy =" false " 表示不采用延迟加载 |
@hibernate.discriminator(识别器) 用于提供多态支持。
column | 用于区分各子类的字段名称。默认值:当前类名 |
type | 对应的Hibernate类型 |
length | 字段长度 |
注意下面的例子运行,应该是不能自动生成代码的,要把注释说明文档都删掉才可以,好象跟XDoclet文档有冲突,我以前有次就是写了些注释文档后就会出错。
/** *//** * * @hibernate.class * table="TUser" * dynamic-update="true" * dynamic-insert="true" * * @hibernate.discriminator column="user_type" type="integer" */ public class TUser implements Serializable ...{ ...... } //根类TUser 中,通过@hibernate.discriminator 指定了以"user_type"字段 //作为识别字段。 /** *//** * @hibernate.subclass * discriminator-value="1" */ public class SysAdmin extends TUser ...{ ...... } /** *//** * @hibernate.subclass * discriminator-value="2" */ public class SysOperator extends TUser ...{ ...... } //SysAdmin 和SysOperator 均继承自TUser,其discriminator-value 分别设置 //为"1"和"2",运行期Hibernate 在读取t_user 表数据时,会根据其user_type 字段进行 //判断,如果是1 的话则映射到SysAdmin类,如果是2 映射到SysOperator 类。
@hibernate.subclass
,顾名思义,@hibernate.subclass与@hibernate.class
不同之处就在于,@hibernate.subclass
描述的是一个子类,实际上,这两个Tag
除去名称不同外,并没有什么区别。
/** * title: 论坛中的主帖子 * * @author conkeyn * @时间 2009-3-14:下午11:32:37 * @hibernate.class table="tbl_thread" dynamic-update="true" * dynamic-insert="true" * @hibernate.discriminator column="thread_type" type="string" length="50" */ public class Thread extends DefaultId { /** */ private static final long serialVersionUID = 351051173463817068L; private String title; private String content; private Date addtime; /** * @hibernate.property * @return */ public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } /** * @hibernate.property type="text" * @return */ public String getContent() { return content; } public void setContent(String content) { this.content = content; } /** * @hibernate.property * @return */ public Date getAddtime() { return addtime; } public void setAddtime(Date addtime) { this.addtime = addtime; } /* * (non-Javadoc) * * @see com.conkeyn.common.model.BaseObject#equals(java.lang.Object) */ @Override public boolean equals(Object o) { // TODO Auto-generated method stub return false; } /* * (non-Javadoc) * * @see com.conkeyn.common.model.BaseObject#hashCode() */ @Override public int hashCode() { // TODO Auto-generated method stub return 0; } /* * (non-Javadoc) * * @see com.conkeyn.common.model.BaseObject#toString() */ @Override public String toString() { // TODO Auto-generated method stub return null; } }
/** * title: * @author conkeyn * @时间 2009-3-14:下午11:49:43 * @hibernate.subclass dynamic-update="true" dynamic-insert="true" discriminator-value="c" */ public class Thread_C extends Thread { /** */ private static final long serialVersionUID = 3619991853952314367L; private String js; public String getJs() { return js; } public void setJs(String js) { this.js = js; } }
生成的xml标签:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="domain.Employee" table="t_employee" discriminator-value="0"> <id name="id" column="id" type="java.lang.Long"> <generator class="native" /> </id> <discriminator column="type" type="integer" /> <property name="name" type="java.lang.String" update="true" insert="true" column="name" /> <subclass name="domain.EmployeeSale" discriminator-value="1"> <property name="item" type="java.lang.String" update="true" insert="true" column="item" /> <property name="total" type="java.lang.Integer" update="true" insert="true" column="total" /> </subclass> <subclass name="domain.EmployeeSkill" discriminator-value="1"> <property name="skill" type="java.lang.String" update="true" insert="true" column="skill" /> <property name="level" type="java.lang.Integer" update="true" insert="true" column="level" /> </subclass> </class> </hibernate-mapping>
SQL:
CREATE TABLE `t_employee` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `type` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `item` varchar(255) DEFAULT NULL, `total` int(11) DEFAULT NULL, `skill` varchar(255) DEFAULT NULL, `level` int(11) DEFAULT NULL, PRIMARY KEY (`id`) )
2、使用 joined-subclass
3、联合使用subclass和joined-subclass
发表评论
-
Hibernate延迟加载(转)
2014-05-04 15:54 765转自:http://cenjun615.blog.1 ... -
hibernate使用@subselect映射数据库视图
2013-12-21 21:15 3361文档引用:http://software-develope ... -
Hibernate annotation 自定义类型 userType
2013-04-01 17:26 1662第一步:添加自定义类: package com.a.en ... -
c3p0配置
2013-03-11 15:44 987<!--注册数据源 --> <bea ... -
hibernate之查询(设置查询提示) (转)
2012-02-03 15:36 1171转自:http://blog.csdn.net/f ... -
Hibernate的缓存策略(转)
2012-02-03 15:28 900Hibernate 的一级缓存 ... -
如何在spring配置多个Hibernate数据源链接(转)
2012-02-02 15:47 1200一、首先配置hibernate数据源: <?xm ... -
UserType 的 MapType,ListType
2011-12-07 14:42 1265import java.io.Serializable; i ... -
在Hibernate显式使用索引
2011-02-25 19:41 1340http://www.znetdevelopment.com/ ... -
Hibernate中多对多关系映射、保存、查询
2009-10-13 20:13 14217首先是一些基础模型类的建立: import java. ... -
Hibernate HQL 语法大全 查询技巧(2)
2009-09-25 19:10 179911.子查询 ... -
Hibernate HQL 语法大全 查询技巧(1)
2009-09-25 19:10 4992HQL: Hibernate查询语言 ... -
Join用法,HQL的方法,Hibernate中的fetch
2009-09-25 18:47 1778Join用法: 主要有Inner J ... -
xdoclet 2
2009-04-24 10:42 1478XDoclet 2 all XDoclet -&g ... -
hibernate 随机 查询
2009-04-03 21:36 2741/** * 随机取出N条记录 * * @p ... -
Hibernate UserType 使用xdoclet映射数据库问题
2008-10-18 09:49 1144http://www.hibernate.org/282.ht ... -
Hibernate
2008-08-26 10:42 1139http://www.openfans.net/viewArt ... -
Hibernate 一对一
2008-08-26 10:14 1393//ClassA: import java.io.Seria ...
相关推荐
在“xdoclet-bin-1.2.1.zip”和“xdoclet-bin-1.2.3.zip”这两个压缩包中,我们可以找到XDoclet的不同版本。版本号的差异表明这两个版本可能包含了一些更新和改进。通常,软件的新版本会修复旧版本存在的bug,增加新...
xdoclet-1.2.1.jar jar包,缺少的可以拿去
XDoclet-1.2.1是该工具的一个版本,而xdoclet-src-1.2.1.zip则包含了这一版本的源代码,对于开发者而言,深入理解其工作原理和扩展功能提供了宝贵的资源。 Eclipse,作为全球最受欢迎的Java集成开发环境(IDE)之一...
xdoclet-bin-1.2.1,xdoclet-bin-1.2.1,xdoclet-bin-1.2.1
《xdoclet-plugins-1.0.3:OA安全模块的核心工具》 在信息技术领域,XDoclet是一个备受推崇的Java开发工具,尤其在企业级应用的自动化文档生成和代码生成方面发挥着重要作用。"xdoclet-plugins-1.0.3"是一个专门...
《XDoclet-1.2.1:Eclipse项目的得力助手》 在软件开发过程中,Eclipse作为一款强大的集成开发环境(IDE),为开发者提供了丰富的功能和便利。然而,有时候我们在使用Eclipse进行Java开发时,可能会遇到“missing ...
XDoclet-1.2.1是该工具的一个版本,包含了对1.2.1版本的支持。 标题中的“xdoclet-1.2.1.zip”表明这是一个包含XDoclet 1.2.1版本的压缩包文件。在Java开发中,开发者可能会遇到“Missing library: xdoclet-1.2.1....
在Xdoclet-plugins-1.0.3这个版本中,开发者可以找到用于处理不同Java EE技术(如EJB、JMS)和ORM框架(如Hibernate)的特定插件。这些插件通过对Java源代码中的特定注释进行解析,生成对应的部署描述符、持久化映射...
而我们今天要探讨的是它的插件集合——"xdoclet-plugins-1.0.3.tar.gz"。 "XDoclet-plugins-1.0.3.tar.gz"是一个压缩包文件,其中包含了XDoclet的多个插件,这些插件扩展了XDoclet的功能,使其能够支持更多的框架和...
xdoclet-base-locale-1.2.1.jar
1. **EJB插件**:XDoclet-EJB插件允许开发者通过在Java类上添加特定注解,自动生成EJB(Enterprise JavaBeans)的部署描述符(deployment descriptor),包括ejb-jar.xml和ejb-jar-bmp.xml等文件。这样,开发者无需...
在本文中,我们将深入探讨XDoclet及其1.2.3版本的源码包"**xdoclet-1.2.3-sources.jar**"。 XDoclet是由XDoclet项目团队开发的开源软件,其核心理念是通过在Java源代码中的注释中嵌入特定的元数据,然后根据这些元...
《XDoclet-1.2.1:Eclipse插件的解决方案与应用》 XDoclet-1.2.1是一款在Java开发中广泛使用的工具,尤其与Eclipse集成时,它扮演着不可或缺的角色。虽然它并非开发过程中的必需品,但对那些追求完美、希望消除...
maven-xdoclet-plugin.jar