了解Oracle ADF入门示例.doc_第1页
了解Oracle ADF入门示例.doc_第2页
了解Oracle ADF入门示例.doc_第3页
了解Oracle ADF入门示例.doc_第4页
了解Oracle ADF入门示例.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

螆芆荿薃肅芆蒁蝿羁芅薄薁袇莄芃螇螃莃莆薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿羇蒂蚆螅羆薄袂肄羅芄蚄羀羄莆袀袆肃葿蚃螂肃薁蒆肁肂莁蚁肇肁蒃薄羃肀薅蝿衿聿芅薂螅肈莇螈肃肇蒀薀罿膇薂螆袅膆节蕿螁膅蒄螄螇膄薆蚇肆膃芆袃羂膂莈蚅袈膂蒀袁螄膁薃蚄肂芀节蒆羈艿莅蚂袄芈薇蒅袀芇芇螀螆芆荿薃肅芆蒁蝿羁芅薄薁袇莄芃螇螃莃莆薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿羇蒂蚆螅羆薄袂肄羅芄蚄羀羄莆袀袆肃葿蚃螂肃薁蒆肁肂莁蚁肇肁蒃薄羃肀薅蝿衿聿芅薂螅肈莇螈肃肇蒀薀罿膇薂螆袅膆节蕿螁膅蒄螄螇膄薆蚇肆膃芆袃羂膂莈蚅袈膂蒀袁螄膁薃蚄肂芀节蒆羈艿莅蚂袄芈薇蒅袀芇芇螀螆芆荿薃肅芆蒁蝿羁芅薄薁袇莄芃螇螃莃莆薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿羇蒂蚆螅羆薄袂肄羅芄蚄羀羄莆袀袆肃葿蚃螂肃薁蒆肁肂莁蚁肇肁蒃薄羃肀薅蝿衿聿芅薂螅肈莇螈肃肇蒀薀罿膇薂螆袅膆节蕿螁膅蒄螄螇膄薆蚇肆膃芆袃羂膂莈蚅袈膂蒀袁螄膁薃蚄肂芀节蒆羈艿莅蚂袄芈薇蒅袀芇芇螀螆芆荿薃肅芆蒁蝿羁芅薄薁袇莄芃螇螃莃莆薀肁莂蒈螅羇莁蚀薈羃莀莀袃衿羇蒂蚆薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁袁肇莄薇袀腿薀袅袀节莃螁衿莄薈蚇羈肄莁薃羇膆薆葿羆芈荿袈羅肈蚅螄羄膀蒇蚀羄节蚃薆羃莅蒆袄羂肄芈螀肁膇蒄蚆肀艿芇薂聿罿蒂蒈肈膁芅袇肈芃薁螃肇莆莃虿肆肅蕿薅肅膈莂袃膄芀薇蝿膃莂莀蚅膂肂薅蚁蝿芄莈薇螈莆蚄袆螇肆蒇螂螆膈蚂蚈螅芁蒅薄袅莃芈袃袄肃蒃蝿袃膅芆螅袂莇蒁蚁 最近,我所工作的机构(威斯康星大学伊奥克莱尔分校)将一个用 Cobol 编写且运行在 Unisys 大型机上的老旧系统的一部分移植到了 Java/J2EE 环境中。我们的 IT 小组主要使用开放源代码工具(包括 Eclipse、Tomcat 和 Spring)来编写应用程序。但是,许可方式上的更改使我们可以考虑 Oracle 工具,因此我们使用 Oracle JDeveloper 10g 和 Oracle 应用程序开发框架 (ADF) 编写了一个应用程序来测试开发模型。本文将对该应用程序进行描述,从而快速而详细地介绍如何使用 Oracle ADF 进行 UI 开发。(有关更进一步的技术信息,请参阅 Oracle 技术网上的 Oracle ADF 教程和 Oracle ADF 开发人员指南、Oracle ACE Steve Muench 在 Oracle 杂志上内容精彩的 ADF 专栏以及 Oracle JDeveloper 论坛中的评论。) 在本文中,我不会描述构建应用程序所需的每一个步骤,但希望这里的信息足以使您作出自己的决策。本文假设您十分了解 Java,熟悉 Eclipse 或 JDeveloper,并具有普通编程知识。(我没有在每个步骤后提醒您 Save All,但该步骤不应省略。) 改变给定体系结构和开发模型总是很困难,因此我将首先提供一些背景知识,以说明 JDeveloper 和 ADF 的价值所在,从而证明这种转变的有利性。我还会在一个单独的部分中提供一些“提示与技巧”。 背景 当前应用程序直接使用了 Java (JDK 1.5)、Spring(MVC、Web Flow、JDBC 模板)和 JSP 页面。数据也复制到了一个 Oracle 数据库 10g 第 2 版数据库中。尽管我们了解如何使用 JBoss Hibernate 作为对象关系映射 (ORM) 工具,但我们的数据访问既不复杂也不是动态的,而且 Spring JDBC 模板已经充分满足了我们的需要。 由于我们在生产中使用的是 Oracle 数据库 10g 第 2 版,因此在基于 Windows 的试用版中使用 Oracle 数据库 10g 快捷版 (XE)(Oracle 数据库的免费入门级版本)顺理成章,我们希望能够在其中轻松地访问数据。在决定使用 Oracle 的 TopLink ORM 工具后使用 Oracle 数据库也很有意义,这样我们就可以轻松地将映射移植到其他数据源(如果决定使用测试用例作为生产应用程序的基础)。我们对 XE 所作的唯一更改就是在系统主页中更改系统全局区 (SGA),以减少它使用的内存。 我们选择的 TopLink 比预期的效果还要好,因为它抽象了许多使用 JDBC 甚至接口(如 Spring 的 JDBC 模板)的繁复的详细信息。(Dustin Marx 在 OTN 上的“在 JDBC 编程中添加一些 Spring 代码”一文中提供了一个优秀示例,该示例使用 JDBC 模板,无需配置复杂的 Spring 环境。)JBoss Hibernate 是一个出色的 ORM 工具,但在端到端 ADF 解决方案中集成 TopLink 映射的能力也令人大开眼界并且非常高效。 根据 Oracle 的建议,我们创建了一个 EJB 会话 Bean 来封装对数据库的访问。这只有在应用程序和数据库之间有一个层(以便在其中根据需要使用业务逻辑)的情况下才有意义。迄今为止,我们的应用程序中没有任何需要状态的事物,而使用 Session Facade 设计模式时通常会需要状态。 使用 ADF 的一个标准步骤是创建一组能够访问数据信息库的数据控件,我们将遵循该原则。在不需要业务逻辑的情况下(通常是查询,有时是更新和删除),通过 UI 控件直接访问信息十分高效。在较复杂的情况下,可以通过在会话 Bean 方法中包含业务规则实现来应用业务规则。(ADF 开发人员指南第 1.1 章很好地说明了 ADF 和 JSF 如何协同工作以提供高效的开发环境。) 我们还使用标准的 JSF 导航创建了一组 jspx 文件。尽管我们熟悉 Struts,但这里并不使用它。我们将使用 jspx 文件,因为这是 Oracle 建议的做法。 JDeveloper 10.1.3 在整个项目中充当 IDE。这可能很明显,但忘了提醒您它无法识别 JDeveloper 在构建 ADF 应用程序的过程中所扮演的基本角色。JDeveloper 是一个 Java 开发工具,但它还可以为您提供对 TopLink、ADF UI 及数据访问控件的功能、JSF 功能以及 XML 和 JSP 文件的端到端访问,还可以提供测试部署和数据库访问环境。 同时,当您在 JDeveloper 中编辑文件时,系统会自动在窗口中调整更改,您在使用 Eclipse 和其他 IDE 时通常看不到这些更改。这些更改提供了各种视图和编辑方法,因此学习使用 JDeveloper 的丰富功能是有一定难度的。您需要了解在哪里双击、何时使用 Structure 和 Data Control 窗口、何时在属性编辑器中设置值,以及(偶尔)何时使用 Source 窗口并编写 Java 或 JSP 代码。 项目 我们的项目是一个简单的学生会银行帐户。所需的基本功能是输入和编辑支出与存款。该项目基本上是 ADF 教程中描述的功能子集,因此熟悉 SRDemo 的人可以识别出其中许多元素。SRDemo 是一个完整的示例应用程序,您可以通过 JDeveloper 的 Help 下拉菜单中的“检查更新”机制下载该应用程序。该程序包含完整的源代码,ADF 开发人员指南使用它来说明如何使用 ADF 进行开发。 第 0 阶段:构建应用程序的初始设置 第 1 步:使用 JSF、EJB 和 TopLink 模板创建一个新的 Web 应用程序。(另请参阅 Oracle ADF 教程 1-10。)选择模板并不重要,所有选项都可用,即使它们最初没有被选中。通过该模板,创建标准的 Model 和 ViewController 项目,从而保留应用程序的前端和后端。您应该设置默认程序包名称,因为在创建 Java 类时,该名称可在 JDeveloper 中用作默认名称。 第 2 步:设置数据库。尽管我们可以尝试使用 New Gallery 的 Database Tier 中的 Offline Database Objects,但我们先前已经创建了所需的 SQL,以使用一组表(3 个)创建模式。我们登录到 XE Web 界面,并使用脚本(您可以在 SQL Command 页面上的引用中找到该脚本)创建了用户和表。为这些表指定主键很重要,这样至少可以使 TopLink 具有足够的信息来生成更复杂的映射: Account 用于保存有关帐户的基本信息。 Details 用于保存所有帐户的交易信息。 Manager 是与帐户关联的个人列表。 为了填充表,我们编写了一个使用 DBUnit 的 Java 应用程序,并使用引用中的数据集创建了一个 CampusAccounts.xml 文件。如果愿意,您可以克隆 XML 元素来扩展数据集。由于这是应用程序中的第一个 Java 类,我们选择在 Model 项目中创建一个 New/General/Java 类,以便创建程序包。然后,将类的主体复制并粘贴到新创建的类中。如果类已经创建,我们将选择 File/Import 选项将 Java Source 复制到 Model 项目中。 public static void main(String argv) throws Exception Class driverClass = Class.forName(oracle.jdbc.OracleDriver); Connection jdbcConnection = DriverManager.getConnection(jdbc:oracle:thin:localhost:1521:XE, CampusAccounts, xxxxxx); IDatabaseConnection connection = new DatabaseConnection(jdbcConnection); IDataSet dataSet = new FlatXmlDataSet(new File(c:CampusAccounts.xml); try DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet); finally connection.close(); 主要片段的主体演示了利用 DBUnit 功能是多么简单。它显示了用于连接到 Oracle Database XE 数据库的 URL,这也是标准 Oracle JDBC 驱动程序的名称。 但是,您需要在项目中添加一个来自 DBUnit 的 jar 文件和一个库,以编译代码。首先,您需要从 DBUnit zip 文件中提取 jar 文件。从 Model 项目的 Properties 中,选择 Libraries/Add Jar,然后将 DBUnit jar 文件添加到项目中。通过从 Model 属性中选择 Libraries/Add Library,您可以添加 Oracle JDBC 库,该库包含 Oracle JDBC 驱动程序。一旦 jar 文件和库可用,就可以使用 JDeveloper 的 Alt-Enter 代码完成选项自动添加所需的导入。(确保导入了 java.sql.Connection。)要运行该 Java 应用程序,请在 Applications 窗口中选择该文件和绿色箭头。一旦连接创建(下一步),就简单多了。第 1 阶段:创建初始模型第 3 步:在创建模式之后创建 TopLink 对象关系映射。(另请参阅 Oracle ADF 教程 1-8 和 2-2。)在使用 TopLink 之前需要创建一个连接。选择 View/Connection Navigator(如果窗口未打开)。选择 New Connection on Database,指定一个名称,并确保选择了 Oracle (JDBC) 类型。输入模式名称和密码。如果您使用的是 XE,则将 sid 更改为 XE。测试连接以确保成功。 返回到 Applications 窗口,右键单击 Model,然后从 Tables 中选择 New/Business Tier/TopLink/Java Objects。为映射命名并更改连接(如果需要)。查询第 2 步中的模式,并加入所有表。检查程序包名称。系统在您指定的程序包中创建了一组数据访问对象 (DAO),每个表一个。通过打开 Model 的 TopLink 文件夹中的映射,您可以看到每个模式表的域映射。如果您在 Structure 窗口中选择了一个表,Map 窗口就会转而显示映射的不同视图。尝试这个操作是种不错的做法,因为它可以让您熟悉 JDeveloper 如何在窗口中调整更改。在 Detail 映射中选择 Queries 选项卡,您会注意到 TopLink 为每个表自动创建了一个 findAll 查询。要添加一个简单查询(将得到表行的较小子集),请在 Named Queries 中选择 Add,并为查询命名。然后,在 Parameters 窗口中选择 Add,设置参数类型(通过指定完全限定的 Java 类名,如 java.lang.Integer),然后单击 Name 列更改参数名。针对您需要指定的每个参数选择 Add。在我们的示例中,已经将 findAccountTransactionsByAccount() 添加到 Detail 映射以根据帐号检索特定帐户的所有行,并将 findOneTransaction() 添加到 Detail 映射以检索特定交易,交易通过帐号(序列号对)区分。findOneTransaction() 是一个 ReadObjectQuery,而 findAccountTransactionsByAccount() 是一个 ReadAllQuery: 如果您选择 Format 选项卡,可以使用 TopLink 编辑器创建查询或输入查询字符串。要使用查询表达式创建器,请选择 Expression/Edit。在创建器中,选择 Add,并将 Second Argument 更改为刚刚创建的参数。如果有其他参数,则再次选择 Add,创建器将自动创建一个 AND 子句: 系统会创建一个默认的 TopLink 会话,对应于所创建的连接。您可以打开 sessions.xml 文件,并通过在 Structure 窗口中选择 Default 来查看默认值。更改诸如日志记录之类的选项非常简单。 第 4 步:创建 EJB 会话。(另请参阅 Oracle ADF 教程 2-14。)对于 Model,选择 New/Business Tier/EJB/Session Bean。无需更改默认设置,除非不需要远程接口。如果查看创建的 Bean,您将看到系统已经创建了可用于表行的 merge、persist、refresh 和 remove 方法。您还将看到,系统已经为您创建的每个命名查询创建了一个方法。EJB 向导自动生成的 Java 代码会在该方法内创建一个会话事务。当然,您不必编辑该代码,并且现有方法的文本也不会被覆盖(如果在重新生成 Bean 时,它仍然是您的首选项)。第 5 步:创建 ADF 数据控件。(另请参阅 Oracle ADF 教程 2-16。)ADF 数据控件为前面步骤中创建的会话 Bean 和 DAO 提供了一个接口。在创建用于访问数据库的用户界面控件时,数据控件会提供“粘合剂”。如果您从 View 菜单中打开 Data Control 选项板,应该看到它是空白的。右键单击会话 Bean 并选择最后一项:Create Data Control。Data Control 选项板将填充有以下内容: 为项目创建可用后端的初步工作就完成了。尽管诸如 ADF 控件之类的产物的实际值在构建某些页面时才会显现出来,但所花费的精力之少仍然令人惊奇。第 2 阶段:创建初始视图第 6 步:使用初始的 faces-config.xml 文件。在首次打开应用程序时,打开 Web Content/WEB-INF 文件夹和所创建的 faces-config.xml 文件。如果由于某种原因尚未创建配置文件,则右键单击 ViewController 项目并选择 New/Web Tier/JSF/JSF Page Flow & Configuration。faces-config.xml 的默认名称是正确的。如果您选择 Overview 选项卡,将看到配置文件的空白视图: 在 JSF 应用程序中,该视图是进入中央配置文件的重要窗口。除了一组描述用户如何在 Faces 应用程序中从一个页面转换到另一个页面的 XML 元素以外,还有用于 Bean 的元素,这些 Bean 包括在用户与界面控件(辅助 Bean)交互时调用其方法的 Bean,以及用于存储长久信息(如用户状态)的 Bean。 第 7 步:创建初始导航图和对应页面。(另请参阅 Oracle ADF 教程 3-2。)现在,需要一组初始页面(主要基于 SRDemo 中使用的页面模板),以及描述用户如何从一个页面转移到另一个页面的初始导航规则。选择针对 faces-confix.xml 文件的 Diagram 选项卡,确保 Configuration 选项板处于开启状态,然后将 JSF 页面拖到配置图上。此时,您已经在配置文件(而不是页面)中创建了一个导航元素。 双击无标题页面图标,以启动一个将实际创建文件的向导。将名称更改为 index;将文件后缀更改为 jspx(Oracle 的普遍建议);确保系统没有自动公开该页面的 UI 组件;然后移动 ADF Faces 组件、JSF 内核、ADF Faces 和 JSF HTML 库。选择您喜欢的 HTML 版本 我们在 4.0.1 Transitional 版上运行良好。 index.jspx 将重定向到应用程序的实际第一页,这是创建 Web 应用程序的标准做法。这可能会创造一个糟糕的先例,但可以在 Source 窗口中查找 index.jspx,并用以下 scriptlet 替换 f:view 标记。注意,您要创建一个目录结构来管理页面 管理涵盖所有应用程序的所有页面,而名为 campusaccounts 的子目录将用于保存该项目的所有页面。将 scriptlet 插入 index.jspx 文件之后,您就可以安全地保存并关闭该文件了。 response.sendRedirect(faces/administration/welcome.jspx); 从 Component 选项板中,将另一个 JSF 页拖到 faces-config.xml 图上。双击图标打开向导,以设置其 jsp 页面。将名称更改为 welcome,将文件类型更改为 jspx 并确保设置目录,以创建您希望创建的任何子目录结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论