|
網誌存檔
熱門網志
|
|
|
将Middlegen-Hibernate解压缩到f:\temp\middlegen 在mysql中创建数据库test,创建表t_user,字段id*(int),name varchar(5),sex tinyint(4),填入 1 tc 1 , 2 wx 0 , 3 yyy 1 修改config下的database目录下的mysql.xml文件 <property name="database.script.file" value="${src.dir}/sql/${name}-mysql.sql"/> <property name="database.driver.file" value="${lib.dir}/mysql-connector-java- <property name="database.driver.classpath" value="${database.driver.file}"/> <property name="database.driver" value="org.gjt.mm.mysql.Driver"/> <property name="database.url" value="jdbc:mysql://localhost/test"/> <property name="database.userid" value="root"/> <property name="database.password" value=""/> <property name="database.schema" value=""/> <property name="database.catalog" value=""/> <property name="jboss.datasource.mapping" value="mySQL"/> 修改目录下的build.xml文件 <!DOCTYPE project [ <!ENTITY database SYSTEM "file:./config/database/mysql.xml"> ]> <property file="${basedir}/build.properties"/> <property name="name" value="test"/>
<property name="src_dir" value="G:\temp\Middlegen\src"/> <property name="package_name" value="com.tc.model.users"/> <property name="build.gen-src.dir" value="${src_dir}/gen-src"/> 这里还有一个属性genXDocletTags,如果设置为true,则生成的代码将包含xdoclet tag,这为以后在开发过程中借助xdoclet进行映射调整提供了帮助。 然后启动middlegen,这里配置一个批处理文件run.bat: g: path d:\lib\ant\bin ant 运行后出现下面界面:
1 Domain Class Name 对应POJO 的类名(POJO 在Hibernate 语义中理解为数据库表所对应的Domain Object。这里的POJO就是所谓的“Plain Ordinary Java Object”,简单的可以理解为一个不包含逻辑代码的值对象(Value Object 简称VO)) 2 Key Generator 主键产生器,可选项说明: 1) Assigned 主键由外部程序负责生成,无需Hibernate参与。 2) 通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。 3) seqhilo 与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。 4) increment 主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。 5) identity 采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL中的主键生成机制。 6) sequence 采用数据库提供的sequence 机制生成主键。如Oralce 中的Sequence。 7) native 由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。 8) uuid.hex 由Hibernate基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键。 9) uuid.string 与uuid.hex 类似,只是生成的主键未进行编码(长度16)。在某些数据库中可能出现问题(如PostgreSQL)。 10) foreign 使用外部表的字段作为主键。 通常利用uuid.hex方式生成主键将提供最好的性能和数据库平台适应性,但由于常用的数据库,如Oracle、DB2、SQLServer、MySql 等,都提供了易用的主键生成机制(自动增长或序列)。我们可以在数据库提供的主键生成机制上,采用native的主键生成方式。 对于并发Insert要求较高的系统,推荐采用uuid.hex 作为主键生成机制。 3 如果需要采用定制的主键产生算法,则在此处配置主键生成器,主键生成器必须实现net.sf.hibernate.id.IdentifierGenerator 接口。 4 Schema Name 数据库Schema Name。 5 Persister 自定义持久类实现类类名。如果系统中还需要Hibernate 之外的持久层实现机制,如通过存储过程得到目标数据集,甚至从LDAP中获取数据来填充我们的POJO。 6 Enable proxies 是否使用代理(用于延迟加载[Lazy Loading])。 7 Dynamic Update 生成Update SQL 时不包含未发生变动的字段属性,这样可以提升SQL执行效能。 8 Mutable 类是否可变,默认选定可变。如果不希望应用程序对此类对应的数据记录进行修改(如对于数据库视图),则可将取消其选定状态,之后对此类的Delete和Update操作都将失效。 以上是针对Class的设置,同样,在MiddleGen中,我们也可以设定字段属性。在MiddleGen中选定某个字段,界面下方即出现字段设置栏:
1 Hibernate mapping specialty 映射类型: Key :主键 Property :属性 2 Java property name 字段对应的Java 属性名 3 Java Type 字段对应的Java 数据类型 4 Column updateable 生成Update SQL时是否包含本字段。 5 Column insertable 生成Insert SQL时是否包含本字段。 单击窗口顶部的Generate 按钮,MiddleGen 即为我们生成这些数据库表所对应的Hibernate映射文件。在MiddleGen根目录下的\build\gen-src\com\tc\model\users目录中,我们可以看到对应的以.hbm.xml 作为后缀的映射文件,映射文件对应了数据库的一个表。 下面我们要需要根据文件生成对应的POJO |
-------------------------------------------------
| 上一篇:hibernate 配置笔记 | 下一篇:USING ANNOTATIONS IN WEB APPLICATIONS |



