使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx

上传人:b****3 文档编号:5228492 上传时间:2022-12-14 格式:DOCX 页数:8 大小:18.49KB
下载 相关 举报
使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx_第1页
第1页 / 共8页
使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx_第2页
第2页 / 共8页
使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx_第3页
第3页 / 共8页
使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx_第4页
第4页 / 共8页
使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx

《使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx》由会员分享,可在线阅读,更多相关《使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx(8页珍藏版)》请在冰豆网上搜索。

使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换.docx

使用XDoclet2+Ant实现Hibernate3的pojoxmldb代码相互转换

使用XDoclet2+Ant实现Hibernate3的pojo-xml-db代码相互转换

XDoclet是一款开源的代码自动生成引擎,支持很多框架的代码自动生成。

而XDoclet2作为Maven2的插件,支持Hibernate3的pojo->xml的代码自动生成。

配合ant与HibernateToolAPI,可以实现pojo<->xml<->dbschema的相互转化。

具体关系为:

生成处理

实用工具

pojo->xml

XDoclet2

xml->pojo

HibernateToolAPI

pojo+xml->dbschema

HibernateToolAPI

dbschema->pojo+xml

可用myeclipse,本文不涉及

下面通过ANT脚本例子,来展示如何完成以上的转换。

1

xmlversion="1.0"encoding="utf-8"?

>

2

3

4

--xdoclet的jar包所在目录-->

5

6

--待处理项目的src目录-->

7

8

--待处理项目的根目录-->

9

10

11

--include进来xdoclet所有jar包-->

12

13

14

15

16

17

--include进来待处理项目的所有jar包,意在使用hibernate相关的jar包-->

18

19

20

21

22

23

--

24继承上2个目录,同时需要把pojo编译好的class文件包含进来。

25这里定义需要留意,很容易掉入到ant的bug陷阱里去。

26详细可参照

27-->

28

29

30

31

32

33

34

--

35xdoclet只在判断未存在hbm.xml的情况下才会生成,已存在的话则不会自动覆盖。

36所以定义一个清空已存在的hbm.xml文件任务。

37-->

38

39

40

41

42

43

44

45

--根据pojo生成hbm.xml,注意一下pojo的路径即可-->

46

47

48

49

50

51

52

53

54

55

56

57

--根据hibernate.cfg.xml文件生成pojo-->

58

59

60

61

62

63

64

65

66

67

--

68生成数据库环境的任务。

69这个可能并不常用,使用org.hibernate.tool.hbm2ddl.SchemaExport编写一个JUnittest可以更方便的连搭环境带造数据。

70-->

71

72

73

74

75

76

77

脚本很详细,看注释即可。

在使用xdoclet2hbm前,需要在pojo上设定javadoc注释,以告诉xdoclet如何进行解析。

one2one&one2many的例子:

Child.java

1packagepo;

2

3/**

4*@hibernate.classtable="child"

5*/

6@SuppressWarnings("serial")

7publicclassChildimplementsjava.io.Serializable{

8

9//xdoclet注释有写在getter上与写在field上2种方法。

10//写在field上会自动生成access="field",所以写在getter上更常用一些。

11

12privateStringid;

13privateStringname;

14privateFatherfather;

15

16/**

17*@hibernate.idgenerator-class="uuid.hex"column="id"length="32"

18*/

19publicStringgetId(){

20returnthis.id;

21}

22

23publicvoidsetId(Stringid){

24this.id=id;

25}

26

27//基本支持所有的hibernate属性,所以想要啥设置就大胆的写吧

28/**

29*@hibernate.propertycolumn="name"length="32"not-null="true"type="java.lang.String"lazy="true"

30*/

31publicStringgetName(){

32returnthis.name;

33}

34

35publicvoidsetName(Stringname){

36this.name=name;

37}

38

39/**

40*@hibernate.many-to-onecolumn="father_id"not-null="true"

41*/

42publicFathergetFather(){

43returnthis.father;

44}

45

46publicvoidsetFather(Fatherfather){

47this.father=father;

48}

49

50}

Father.java

1packagepo;

2

3importjava.util.HashSet;

4importjava.util.Set;

5

6/**

7*@hibernate.classtable="father"

8*/

9@SuppressWarnings("serial")

10publicclassFatherimplementsjava.io.Serializable{

11

12privateStringid;

13

14privateStringname;

15

16privateIntegerage;

17

18privateSetchildren=newHashSet(0);

19

20/**

21*@hibernate.idgenerator-class="uuid.hex"column="id"length="32"

22*/

23publicStringgetId(){

24returnthis.id;

25}

26

27publicvoidsetId(Stringid){

28this.id=id;

29}

30

31/**

32*@hibernate.propertycolumn="name"length="32"not-null="true"type="java.lang.String"

33*/

34publicStringgetName(){

35returnthis.name;

36}

37

38publicvoidsetName(Stringname){

39this.name=name;

40}

41

42/**

43*@hibernate.propertycolumn="age"length="32"type="java.lang.Integer"

44*/

45publicIntegergetAge(){

46returnage;

47}

48

49publicvoidsetAge(Integerage){

50this.age=age;

51}

52

53/**

54*@hibernate.settable="child"

55*@hibernate.keycolumn="father_id"

56*@hibernate.one-to-manyclass="po.Child"

57*/

58publicSetgetChildren(){

59returnchildren;

60}

61

62publicvoidsetChildren(Setchildren){

63this.children=children;

64}

65}

many2many的例子:

Student.java

1packagepo;

2

3importjava.util.HashSet;

4importjava.util.Set;

5

6/**

7*@hibernate.classtable="student"

8*/

9@SuppressWarnings("serial")

10publicclassStudentimplementsjava.io.Serializable{

11

12privateStringid;

13privateStringname;

14privateSetteachers=newHashSet(0);

15

16/**

17*@hibernate.idgenerator-class="uuid.hex"column="id"length="32"

18*/

19publicStringgetId(){

20returnthis.id;

21}

22

23publicvoidsetId(Stringid){

24this.id=id;

25}

26

27/**

28*@hibernate.propertycolumn="name"length="32"not-null="true"type="java.lang.String"

29*/

30publicStringgetName(){

31returnthis.name;

32}

33

34publicvoidsetName(Stringname){

35this.name=name;

36}

37

38/**

39*@hibernate.settable="student_teacher_relation"

40*@hibernate.keycolumn="student_id"

41*@hibernate.many-to-manyclass="po.Teacher"column="teacher_id"

42*/

43publicSetgetTeachers(){

44returnteachers;

45}

46

47publicvoidsetTeachers(Setteachers){

48this.teachers=teachers;

49}

50}

Teacher.java

1packagepo;

2

3importjava.util.HashSet;

4importjava.util.Set;

5

6/**

7*@hibernate.classtable="teacher"

8*/

9@SuppressWarnings("serial")

10publicclassTeacherimplementsjava.io.Serializable{

11

12privateStringid;

13privateStringname;

14privateSetstudents=newHashSet(0);

15

16/**

17*@hibernate.idgenerator-class="uuid.hex"column="id"length="32"

18*/

19publicStringgetId(){

20returnthis.id;

21}

22

23publicvoidsetId(Stringid){

24this.id=id;

25}

26

27/**

28*@hibernate.propertycolumn="name"length="32"not-null="true"type="java.lang.String"

29*/

30publicStringgetName(){

31returnthis.name;

32}

33

34publicvoidsetName(Stringname){

35this.name=name;

36}

37

38/**

39*@hibernate.settable="student_teacher_relation"

40*@hibernate.keycolumn="teacher_id"

41*@hibernate.many-to-manyclass="po.Student"column="student_id"

42*/

43publicSetgetStudents(){

44returnstudents;

45}

46

47publicvoidsetStudents(Setstudents){

48this.students=students;

49}

50

51}

总结:

1.本文没有涉及hibernateannnotation模式,需要者请自行查阅相关资料。

2.XDoclet2没有XDoclet1代好找,推荐一个网址JarSearchEngine

3.本文未能涉及在开发中,程序运转时遇到DBschema结构变化而进行的动态自动转换技术。

如有高人知晓,请不吝赐教。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1