您的位置:首页 > 移动开发

read AppFuse 11-实践-业务信息person的建立

2005-07-10 18:08 295 查看
read AppFuse 11-实践-业务信息person的建立
● 按照AppFuse帮助,进行AppFuse开发实践
[/b](1) [/b]创建POJO
[/b]package org.dudu.model;
/**
* @hibernate.class table="person"
*/
public class Person extends BaseObject
{
private Long id;
private String firstName;
private String lastName;
/**
* @return Returns the id
* @hibernate.id column="id"
* generator-class="increment" unsaved-value="null"
*/
public long getId() {
return id;
}
/**
* @return Returns thd first name
* @struts.validator type="required"
* @hibernate.property column="first_name" length="50" not-null="true"
*/
public String getFirstName() {
return firstName;
}
/**
* @return Returns the last name
* @struts.validator type="required"
* @hibernate.property column="last_name" length="50" not-null="true"
*/
public String getLastName() {
return lastName;
}
/**
* @param l
*/
public void setId(long l) {
id = l;
}
/**
* @param string
*/
public void setFirstName(String string) {
firstName = string;
}
/**
* @param string
*/
public void setLastName(String string) {
lastName = string;
}
/* (非 Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object o) {
// TODO 自动生成方法存根
return false;
}
/* (非 Javadoc)
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
return 0;
}
public String toString() {
return null;
}

}
Ø[/b] Hibernate[/b]是一个对象/关系(O/R) 框架,它允许你将一个Java对象同一个表关联。
[/b]Ø[/b] [/b]要确保对象的id属性的getter是当前类的第一个方法,否则生成的JSP的页面可能会有一个脚本错误
[/b]Ø[/b] [/b]注意:所有的 @hibernate.* tag必须放在你的POJO的getter的Javadoc中
[/b]Ø[/b] [/b]如果你想更改列的长度, 更改@hibernate.property标记的length属性。如果你希望它是一个必填的字段(NOT NULL),那么你要添加not-null="true"。
[/b]Ø[/b] [/b]添加column属性的唯一原因是:表的列名和对象的属性名字不一致。如果他们一致,就不需要添加column属性。[引用][/b]

[/b](2) [/b]使用Ant根据Person对象创建一个person新表和名为Person.hbm.xml的映射文件。
[/b]E:/dudu>ant setup-db
Buildfile: build.xml

init:

db-create:
[echo] Detected MySQL, creating database...
[echo] Creating database with: mysql-create.sql
[echo] URL: jdbc:mysql://localhost/mysql
[sql] Executing file: E:/dudu/metadata/sql/mysql-create.sql
[sql] 3 of 3 SQL statements executed successfully

clean:
[echo] Cleaning build and distribution directories
[delete] Deleting directory E:/dudu/build
[delete] Deleting directory E:/dudu/dist
[delete] Deleting: E:/dudu/database.properties

build.properties.missing:

prepare:
[echo] Preparing target directory 'E:/dudu/build/dudu'
[mkdir] Created dir: E:/dudu/build/dudu
[mkdir] Created dir: E:/dudu/build/dudu/WEB-INF
[mkdir] Created dir: E:/dudu/dist/webapps

hibernatedoclet:
[hibernatedoclet] (XDocletMain.start 47 ) Running <hibernate/
>
[hibernatedoclet] Generating mapping file for org.dudu.model.User.
[hibernatedoclet] org.dudu.model.User
[hibernatedoclet] Generating mapping file for org.dudu.model.Person.
[/b][hibernatedoclet] org.dudu.model.Person
[/b][hibernatedoclet] Generating mapping file for org.dudu.model.Role.
[hibernatedoclet] org.dudu.model.Role
[hibernatedoclet] Generating mapping file for org.dudu.model.UserCookie.
[hibernatedoclet] org.dudu.model.UserCookie

compile-dao:

compile-module:
[echo] Compiling dao...
[mkdir] Created dir: E:/dudu/build/dao/classes
[mkdir] Created dir: E:/dudu/build/test/dao/classes
[javac] Compiling 16 source files to E:/dudu/build/dao/classes
[javac] Note: E:/dudu/src/dao/org/dudu/model/User.java uses unchecked or uns
afe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.

package-dao:
[copy] Copying 1 file to E:/dudu/build/dao/gen
[jar] Building jar: E:/dudu/dist/dudu-dao.jar

db-prepare:

generate.database.properties:
[echo] generating database.properties from build.properties
[propertyfile] Creating new property file: E:/dudu/database.properties
[schemaexport] (cfg.Environment 478 ) Hibernate 2.1.7
[schemaexport] (cfg.Environment 507 ) hibernate.properties n
ot found
[schemaexport] (cfg.Environment 538 ) using CGLIB reflection
optimizer
[schemaexport] (cfg.Environment 567 ) using JDK 1.4 java.sql
.Timestamp handling
[schemaexport] (cfg.Configuration 169 ) Mapping file: E:/dudu/
build/dao/gen/org/dudu/model/Person.hbm.xml
[schemaexport] (cfg.Binder 230 ) Mapping class: org.dud
[/b]u.model.Person -> person
[/b][schemaexport] (cfg.Configuration 169 ) Mapping file: E:/dudu/
build/dao/gen/org/dudu/model/Role.hbm.xml
[schemaexport] (cfg.Binder 230 ) Mapping class: org.dud
u.model.Role -> role
[schemaexport] (cfg.Configuration 169 ) Mapping file: E:/dudu/
build/dao/gen/org/dudu/model/User.hbm.xml
[schemaexport] (cfg.Binder 230 ) Mapping class: org.dud
u.model.User -> app_user
[schemaexport] (cfg.Binder 572 ) Mapping collection: or
g.dudu.model.User.roles -> user_role
[schemaexport] (cfg.Configuration 169 ) Mapping file: E:/dudu/
build/dao/gen/org/dudu/model/UserCookie.hbm.xml
[schemaexport] (cfg.Binder 230 ) Mapping class: org.dud
u.model.UserCookie -> user_cookie
[schemaexport] (dialect.Dialect 86 ) Using dialect: net.sf.
hibernate.dialect.MySQLDialect
[schemaexport] (cfg.Configuration 632 ) processing one-to-many
association mappings
[schemaexport] (cfg.Configuration 641 ) processing one-to-one
association property references
[schemaexport] (cfg.Configuration 666 ) processing foreign key
constraints
[schemaexport] (cfg.Configuration 632 ) processing one-to-many
association mappings
[schemaexport] (cfg.Configuration 641 ) processing one-to-one
association property references
[schemaexport] (cfg.Configuration 666 ) processing foreign key
constraints
[schemaexport] (hbm2ddl.SchemaExport 98 ) Running hbm2ddl schema
export
[schemaexport] (hbm2ddl.SchemaExport 112 ) writing generated sche
ma to file: create-tables.sql
[schemaexport] (hbm2ddl.SchemaExport 117 ) exporting generated sc
hema to database
[schemaexport] (connection.DriverManagerConnectionProvider 42 ) Using Hibernate
built-in connection pool (not for production use!)
[schemaexport] (connection.DriverManagerConnectionProvider 43 ) Hibernate conne
ction pool size: 20
[schemaexport] (connection.DriverManagerConnectionProvider 77 ) using driver: c
om.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/dudu?autoReconnect=true&useU
nicode=true&characterEncoding=utf-8
[schemaexport] (connection.DriverManagerConnectionProvider 78 ) connection prop
erties: {user=test, password=test, show_sql=true}
[schemaexport] alter table user_role drop foreign key FK143BF46A14048CB4;
[schemaexport] alter table user_role drop foreign key FK143BF46AF02988D6;
[schemaexport] drop table if exists user_role;
[schemaexport] drop table if exists app_user;
[schemaexport] drop table if exists person;
[schemaexport] drop table if exists user_cookie;
[schemaexport] drop table if exists role;
[schemaexport] create table user_role (
[schemaexport] username varchar(20) not null,
[schemaexport] role_name varchar(20) not null,
[schemaexport] primary key (username, role_name)
[schemaexport] );
[schemaexport] create table app_user (
[schemaexport] username varchar(20) not null,
[schemaexport] version integer not null,
[schemaexport] password varchar(255) not null,
[schemaexport] first_name varchar(50) not null,
[schemaexport] last_name varchar(50) not null,
[schemaexport] address varchar(150),
[schemaexport] city varchar(50) not null,
[schemaexport] province varchar(100),
[schemaexport] country varchar(100),
[schemaexport] postal_code varchar(15) not null,
[schemaexport] email varchar(255) not null unique,
[schemaexport] phone_number varchar(255),
[schemaexport] website varchar(255),
[schemaexport] password_hint varchar(255),
[schemaexport] primary key (username)
[schemaexport] );
[schemaexport] create table person (
[/b][schemaexport] id bigint not null,
[/b][schemaexport] first_name varchar(50) not null,
[/b][schemaexport] last_name varchar(50) not null,
[/b][schemaexport] primary key (id)
[/b][schemaexport] );
[/b][schemaexport] create table user_cookie (
[schemaexport] id bigint not null,
[schemaexport] username varchar(30) not null,
[schemaexport] cookie_id varchar(100) not null,
[schemaexport] date_created datetime not null,
[schemaexport] primary key (id)
[schemaexport] );
[schemaexport] create table role (
[schemaexport] name varchar(20) not null,
[schemaexport] version integer not null,
[schemaexport] description varchar(255),
[schemaexport] primary key (name)
[schemaexport] );
[schemaexport] alter table user_role add index FK143BF46A14048CB4 (role_name), a
dd constraint FK143BF46A14048CB4 foreign key (role_name) references role (name);

[schemaexport] alter table user_role add index FK143BF46AF02988D6 (username), ad
d constraint FK143BF46AF02988D6 foreign key (username) references app_user (user
name);
[schemaexport] create index user_cookie_username_cookie_id on user_cookie (usern
ame, cookie_id);
[schemaexport] (hbm2ddl.SchemaExport 160 ) schema export complete

[schemaexport] (connection.DriverManagerConnectionProvider 143 ) cleaning up con
nection pool: jdbc:mysql://localhost/dudu?autoReconnect=true&useUnicode=true&cha
racterEncoding=utf-8

db-load:
(connection.DriverManagerConnectionProvider 143 ) cleaning up connection pool: j
dbc:mysql://localhost/dudu?autoReconnect=true&useUnicode=true&characterEncoding=
utf-8
[dbunit] Executing operation: CLEAN_INSERT
[dbunit] on file: E:/dudu/metadata/sql/sample-data.xml
[dbunit] with format: xml

setup-db:

BUILD SUCCESSFUL
Total time: 1 minute 6 seconds

Ø[/b] [/b]生成的person表
[/b] mysql> desc person;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | bigint(20) | | PRI | 0 | |
| first_name | varchar(50) | | | | |
| last_name | varchar(50) | | | | |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Ø[/b] [/b]生成的Person..hbm.xml
[/b] <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
<class
name="org.dudu.model.Person"
table="person"
dynamic-update="false"
dynamic-insert="false"
select-before-update="false"
optimistic-lock="version"
>
<id
name="id"
column="id"
type="java.lang.Long"
unsaved-value="null"
>
<generator class="increment">
<!--
To add non XDoclet generator parameters, create a file named
hibernate-generator-params-Person.xml
containing the additional parameters and place it in your merge dir.
-->
</generator>
</id>
<property
name="firstName"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="first_name"
length="50"
not-null="true"
/>
<property
name="lastName"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="last_name"
length="50"
not-null="true"
/>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-Person.xml
containing the additional properties and place it in your merge dir.
-->
</class>
</hibernate-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: