Hibernate学习资料(2009-2-26)Word下载.doc
- 文档编号:14444233
- 上传时间:2022-10-22
- 格式:DOC
- 页数:35
- 大小:398.50KB
Hibernate学习资料(2009-2-26)Word下载.doc
《Hibernate学习资料(2009-2-26)Word下载.doc》由会员分享,可在线阅读,更多相关《Hibernate学习资料(2009-2-26)Word下载.doc(35页珍藏版)》请在冰豆网上搜索。
<
propertyname="
database.script.file"
value="
${src.dir}/sql/${name}-mysql.sql"
/>
database.driver.file"
${lib.dir}/mysql.jar"
database.driver.classpath"
${database.driver.file}"
database.driver"
org.gjt.mm.mysql.Driver"
database.url"
jdbc:
mysql:
//localhost/sample"
database.userid"
user"
database.password"
mypass"
database.schema"
"
database.catalog"
jboss.datasource.mapping"
mySQL"
修改MiddleGen根目录下的build.xml文件,此文件是Middlegen-Hibernate的Ant
构建配置。
Middlegen-Hibernate将根据build.xml文件中的具体参数生成数据库表映射
文件。
可配置的项目包括:
a)目标数据库配置文件地址
查找关键字”!
ENTITY”,得到:
!
DOCTYPEproject[
ENTITYdatabaseSYSTEM
file:
./config/database/hsqldb.xml"
>
]>
默认情况下,MiddleGen采用的是hsqldb.xml,将其修改为我们所用的数据
库配置文件(mysql.xml):
./config/database/mysql.xml"
b)Applicationname
查找:
name"
value="
airline"
“aireline”是MiddleGen原始配置中默认的ApplicationName,将其修改为我们
所希望的名称,如“HibernateSample”:
HibernateSample"
c)输出目录
查找关键字“name="
build.gen-src.dir"
”,得到:
${build.dir}/gen-src"
修改value="
使其指向我们所期望的输出目录,
这里我们修改为:
C:
\sample"
d)对应代码的Packagename
查找关键字“destination”,得到:
hibernate
destination="
${build.gen-src.dir}"
package="
${name}.hibernate"
genXDocletTags="
false"
genIntergratedCompositeKeys="
javaTypeMapper=
middlegen.plugins.hibernate.HibernateJavaTypeMapper"
可以看到,hibernate节点package属性的默认设置实际上是由前面的
ApplicationName(${name})和“.hibernate”组合而成,根据我们的需要,
将其改为:
org.hibernate.sample"
true"
这里还有一个属性genXDocletTags,如果设置为true,则生成的代码将包含xdoclettag,这为以后在开发过程中借助xdoclet进行映射调整提供了帮助。
关于Hibernate的xdoclet使用,请参见“高级特性”中的相关内容。
注意,如果使用的数据库为SQLServer,需要将build.xml中如下部分(下划线部分)删除,否则Middlegen会报出找不到表的错误。
middlegen
appname="
${name}"
prefsdir="
${src.dir}"
gui="
${gui}"
databaseurl="
${database.url}"
initialContextFactory="
${java.naming.factory.initial}"
providerURL="
${java.naming.provider.url}"
datasourceJNDIName="
${datasource.jndi.name}"
driver="
${database.driver}"
username="
${database.userid}"
password="
${database.password}"
schema="
${database.schema}"
catalog="
${database.catalog}"
在MiddleGen根目录下运行ant,就将出现MiddleGen的界面:
1DomainClassName
对应POJO的类名
2KeyGenerator
主键产生器
可选项说明:
1)Assigned
主键由外部程序负责生成,无需Hibernate参与。
2)hilo
通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。
3)seqhilo
与hilo类似,通过hi/lo算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。
4)increment
主键按数值顺序递增。
此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。
这种方式可能产生的问题是:
如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常。
因此,如果同一数据库有多个实例访问,此方式必须避免使用。
5)identity
采用数据库提供的主键生成机制。
如DB2、SQLServer、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
使用外部表的字段作为主键。
3如果需要采用定制的主键产生算法,则在此处配置主键生成器,主键生成器必须实现net.sf.hibernate.id.IdentifierGenerator接口。
4SchemaName
数据库SchemaName。
5Persister
自定义持久类实现类类名。
如果系统中还需要Hibernate之外的持久层实现机制,如通过存储过程得到目标数据集,甚至从LDAP中获取数据来填充我们的POJO。
6Enableproxies
是否使用代理(用于延迟加载[LazyLoading])。
7DynamicUpdate
如果选定,则生成UpdateSQL时不包含未发生变动的字段属性,这样可以在一定程度上提升SQL执行效能。
8Mutable
类是否可变,默认为选定状态(可变)。
如果不希望应用程序对此类对应的数据记录进行修改(如对于数据库视图),则可将取消其选定状态,之后对此类的Delete和Update操作都将失效。
9ImplementtheLifecyleinterface
是否实现Lifecyle接口。
Lifecyle接口提供了数据固化过程中的控制机制,通过实现Lifecyle接口,我们可以在数据库操作中加入回调(CallBack)机制,如在数据库操作之前,之后触发指定操作。
10ImplementtheValidatableinterface
是否实现Validatable接口。
通过实现Validatable接口,我们可以在数据被固化到数据库表之前对其合法性进行验证。
值得注意的是,通过实现Lifecyle接口,我们同样可以在数据操作之前验证数据合法性,不同的是,Validatable接口中定义的validate方法可能会被调用多次,因此设计中应避免在Validatable接口的validate方法实现中加入业务逻辑的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 学习 资料 2009 26