使用XDoclet简化hibernate配置文件
使用XDoclet简化hibernate配置文件
这只是一个简单的事例,用来展示如何运用XDclote来为hibernate生成配置文件.是XDoclote之旅的开端
更多信息可从http://xdoclet.sf.net/上获取。
XDoclet面向属性编程
目录结构c:\eclipse\workspace\hibernate\src\hb\Cat.java
c:\eclipse\workspace\hibernate\src\example.java
c:\eclipse\workspace\hibernate\src\hibernate.cfg.xml
c:\eclipse\workspace\hibernate\src\xdoclet-lib\放置你所要的所有的包
c:\eclipse\workspace\hibernate\build.xml
相关hibernate.cfg.xml请参看蜗牛乐园的java分类的 如何让猫活起来 这篇文章。
xdoclet.jar , xdoclet-hibernate-module.jar, xdoclet-xdoclet-module.jar, xdoclet-xjavadoc.jar
这四个jar文件是为了运行hibernatedoclet必备的。
下面举例具体说明,如何运用XDoclet来解决配置文件变化和重构升级带来的困难。
Cat.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class
name="hb.Cat"
table="cat"
dynamic-update="false"
dynamic-insert="false"
>
<id
name="id"
column="CAT_ID"
type="java.lang.String"
unsaved-value="null"
>
<generator class="uuid.hex">
</generator>
</id>
<property
name="name"
type="java.lang.String"
update="true"
insert="true"
column="NAME"
/>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-Cat.xml
containing the additional properties and place it in your merge dir.
-->
</class>
</hibernate-mapping>
这样一个简单的配置文件
下面让我们来看,如何运用XDoclet来自动生成他。
Cat.java是它的类,具体请注意其中加入的标识符。
package hb;
/**
* @hibernate.class table="cat"
*/
public class Cat {
private String id;
private String name;
public Cat() {
}
/**
* @hibernate.id column="CAT_ID" generator-class="uuid.hex" unsaved-value="null"
*/
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/**
* @hibernate.property column="NAME"
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
String strCat = new StringBuffer()
.append(this.getId()).append(", ")
.append(this.getName()).append(", ")
.toString();
return strCat;
}
}
<------------------------------------------------------------>
example02.java
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.tool.hbm2ddl.SchemaUpdate;
import contacts.ContactInfo;
import contacts.PhoneNumber;
public class Example {
public static void main(String[] args) throws Exception {
// load configuration
Configuration config = new Configuration();
config.configure();
// update database schema if required
new SchemaUpdate(config).execute(true);
// open a session
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
// create a contact
Cat contact = new Cat();
contact.setName("Bart");
System.out.println("add contact to database...");
try {
session.save(contact);
session.flush();
session.connection().commit();
} catch (Exception e) {
session.connection().rollback();
}
System.out.println("contact:" + contact);
// close the session
session.close();
sessionFactory.close();
}
}
<------------------------------------------------------------->
ant文件,build.xml
<project name="hb" default="run">
<property name="src.java" location="src"/>
<property name="build.dir" location="build"/>
<path id="classpath.build">
<fileset dir="../lib"/>
<fileset dir="xdoclet-lib"/>
</path>
<path id="classpath.runtime">
<fileset dir="../lib"/>
<pathelement location="build"/>
</path>
<target name="java" description="Compile Java">
<mkdir dir="${build.dir}"/>
<javac srcdir="${src.java}"
destdir="${build.dir}"
classpathref="classpath.build"
debug="true"/>
<copy todir="${build.dir}">
<fileset dir="${src.java}">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="config" depends="java" description="Generate hbm files">
<taskdef name="hibernatedoclet" classpathref="classpath.build"
classname="xdoclet.modules.hibernate.HibernateDocletTask"/>
<hibernatedoclet destDir="${build.dir}">
<fileset dir="${src.java}">
<include name="**/*.java"/>
</fileset>
<hibernate version="2.0"/>
</hibernatedoclet>
</target>
<target name="run" depends="clean,config">
<java classname="Example" classpathref="classpath.runtime" fork="true"/>
</target>
<target name="clean" description="Clean up built files">
<delete dir="${build.dir}"/>
<delete>
<fileset dir="." includes="dbdata*.*"/>
</delete>
</target>
</project>
这只是一个简单的事例,用来展示如何运用XDclote来为hibernate生成配置文件.是XDoclote之旅的开端
更多信息可从http://xdoclet.sf.net/上获取。
XDoclet面向属性编程
目录结构c:\eclipse\workspace\hibernate\src\hb\Cat.java
c:\eclipse\workspace\hibernate\src\example.java
c:\eclipse\workspace\hibernate\src\hibernate.cfg.xml
c:\eclipse\workspace\hibernate\src\xdoclet-lib\放置你所要的所有的包
c:\eclipse\workspace\hibernate\build.xml
相关hibernate.cfg.xml请参看蜗牛乐园的java分类的 如何让猫活起来 这篇文章。
xdoclet.jar , xdoclet-hibernate-module.jar, xdoclet-xdoclet-module.jar, xdoclet-xjavadoc.jar
这四个jar文件是为了运行hibernatedoclet必备的。
下面举例具体说明,如何运用XDoclet来解决配置文件变化和重构升级带来的困难。
Cat.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class
name="hb.Cat"
table="cat"
dynamic-update="false"
dynamic-insert="false"
>
<id
name="id"
column="CAT_ID"
type="java.lang.String"
unsaved-value="null"
>
<generator class="uuid.hex">
</generator>
</id>
<property
name="name"
type="java.lang.String"
update="true"
insert="true"
column="NAME"
/>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-Cat.xml
containing the additional properties and place it in your merge dir.
-->
</class>
</hibernate-mapping>
这样一个简单的配置文件
下面让我们来看,如何运用XDoclet来自动生成他。
Cat.java是它的类,具体请注意其中加入的标识符。
package hb;
/**
* @hibernate.class table="cat"
*/
public class Cat {
private String id;
private String name;
public Cat() {
}
/**
* @hibernate.id column="CAT_ID" generator-class="uuid.hex" unsaved-value="null"
*/
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/**
* @hibernate.property column="NAME"
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
String strCat = new StringBuffer()
.append(this.getId()).append(", ")
.append(this.getName()).append(", ")
.toString();
return strCat;
}
}
<------------------------------------------------------------>
example02.java
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.tool.hbm2ddl.SchemaUpdate;
import contacts.ContactInfo;
import contacts.PhoneNumber;
public class Example {
public static void main(String[] args) throws Exception {
// load configuration
Configuration config = new Configuration();
config.configure();
// update database schema if required
new SchemaUpdate(config).execute(true);
// open a session
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
// create a contact
Cat contact = new Cat();
contact.setName("Bart");
System.out.println("add contact to database...");
try {
session.save(contact);
session.flush();
session.connection().commit();
} catch (Exception e) {
session.connection().rollback();
}
System.out.println("contact:" + contact);
// close the session
session.close();
sessionFactory.close();
}
}
<------------------------------------------------------------->
ant文件,build.xml
<project name="hb" default="run">
<property name="src.java" location="src"/>
<property name="build.dir" location="build"/>
<path id="classpath.build">
<fileset dir="../lib"/>
<fileset dir="xdoclet-lib"/>
</path>
<path id="classpath.runtime">
<fileset dir="../lib"/>
<pathelement location="build"/>
</path>
<target name="java" description="Compile Java">
<mkdir dir="${build.dir}"/>
<javac srcdir="${src.java}"
destdir="${build.dir}"
classpathref="classpath.build"
debug="true"/>
<copy todir="${build.dir}">
<fileset dir="${src.java}">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="config" depends="java" description="Generate hbm files">
<taskdef name="hibernatedoclet" classpathref="classpath.build"
classname="xdoclet.modules.hibernate.HibernateDocletTask"/>
<hibernatedoclet destDir="${build.dir}">
<fileset dir="${src.java}">
<include name="**/*.java"/>
</fileset>
<hibernate version="2.0"/>
</hibernatedoclet>
</target>
<target name="run" depends="clean,config">
<java classname="Example" classpathref="classpath.runtime" fork="true"/>
</target>
<target name="clean" description="Clean up built files">
<delete dir="${build.dir}"/>
<delete>
<fileset dir="." includes="dbdata*.*"/>
</delete>
</target>
</project>
air_tuyh
2005-05-14 21:10:42
评论:0
阅读:3126
引用:0
