hibernate 自动化工具箱引入 引言:
最近在看持久层的框架模式,研读Martin Flower 的大作《企业应用架构模式》,受益匪浅,很多模式都反映在了现今流行的orm框架之中了.
因为公司项目中使用的持久层技术为Hibernate,再加上自己想深入的在实践中去领悟Martin 提到的模式。故而花了几天的空闲时间,去拜读了满江
红开源组织的两位核心人员夏昕,曹晓钢的力作《深入浅出Hibernate》,至此初识hibernate.
之前一直用sping jdbcTemplate,对hibernate有点疏离,一则是因为项目的技术选型比较死板;二则hibernate的驾驭能力参差不齐.其实说
句实话,主要原因还是不愿意更新自己的知识,不想去打破固有的工作模式,不想去改进项目的技术架构,再就是公司的学习气氛。我一直认为技术
以用为本,再好的技术,不用就是浪费,不用就永远不了解,不用就难以领悟其中的思想,优缺点.
正文:
下面介绍一些hibernate周边的工具集,包括性能监控及ORM自动化映射工具.
1 性能监控: a、P6SPY P6SPY 模拟了一个标准的jdbc driver ,它代理了真正的底层jdbc 驱动程序 a1、download address : http://sourceforge.net/projects/p6spy/ a2、解压p6spy-install.jar ,并将p6spy.jar 拷贝到项目lib目录 a3、修改p6spy 的配置文件spy.properties,并copy 该文件到项目的src目录下 #realdriver=com.mysql.jdbc.Driver // 配置为要监控的db 驱动 a4、修改hibernate.cfg.xml 文件,将连接的db 驱动设置为p6spy提供的代理驱动类; <property name="connection.driver_class">com.p6spy.engine.sample.P6SampleDriver</property> a5、 查看日志文件,可以通过在spy.properties 配置,默认为在项目根目下spy.log b、SQL Profiler (P6Sy的周边工具) 提供图形化界面,以p6spy 的日志输出为来源,提供分析及可视化的界面 b1、download address : http://sourceforge.net/projects/sqlprofiler/ b2、解压sqlprofiler-0.3-bin.zip, 将解压目录下的spy.properties copy到src目录下, 并修改readldriver 为当前使用的db driver b3、运行sqlprofiler.jar ,显示GUI 图形化界面; (java -jar sqlprofiler.jar) 该程序会自动监听p6spy 产生的log 信息 log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender log4j.appender.SQLPROFILER_CLIENT.RemoteHost=localhost log4j.appender.SQLPROFILER_CLIENT.Port=4445 // 监听端口 log4j.appender.SQLPROFILER_CLIENT.LocationInfo=true b4、其他使用信息,可参看解压目录下的readme.txt 文件 2 ER 模型 --> 类模型 (db schame ---> hbm.xml 映射文件 ---> java pojo) a、Middlegen-Hibernate-r5:用于将数据库schame 生成映射文件,及Doclet 元数据定义 a1 首先需要ant 环境,ANT_HOME=... a2 拷贝实际数据库对应的驱动到Middlegen-Hibernate-r5/lib 目录下 a3 修改Middlegen-Hibernate-r5\config\database\mysql.xml文件如下条目: <!--指定要使用的数据库驱动jar包--> <property name="database.driver.file" value="${lib.dir}/mysql-connector-java-5.0.4-bin.jar"/> a4 修改Middlegen-Hibernate-r5 目录下的bulid.xml 文件如下: 第一处:修改引用的数据库配置文件 <!DOCTYPE project [ <!ENTITY database SYSTEM "file:./config/database/mysql.xml"> ]> 第二处(第184行左右):修改生成的hbm中类的包名 <!--修改包名--> <hibernate destination="${build.gen-src.dir}" package="com.og.po" // 修改包名 genXDocletTags="true" // 修改该标记为true,可以生成doclet tag 元数据,以备后续使用XDoclet 工具生成java pojo类 genIntergratedCompositeKeys="false" javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper" /> a5 使用ant 工具构建Middlegen GUi ,可以在此界面中调整数据库表之间的关系及hibernate的映射文件表,属性定义; 完成之后就可以点击Generation 按钮,生成hbm文件 b、hibernate-ext: hibernate 扩展工具,可以使用其中的hbm2java 生成具体的java pojo类 download : http://sourceforge.net/projects/hibernate/files/hibernate-ext/2.1.3/hibernate-extensions-2.1.3.zip/download c、hibernate synchronizer: eclipse 的一个插件,比Middlegen更强大的数据库反向生成hbm的工具; download: http://sourceforge.net/projects/hibernatesynch/?source=dlp d、jboss tools工具 ,集成eclipse 的插件 Hibernate Code Generation ,可以同时生成hbm及java pojo ,提供表与类的映射关系图 最重要的配置文件: hibernate console configuration d1 配置hibernate console configuration : new --> other -> hibernate console configuration ;配置简单。 √ db connection √ configuration file : hibernate.cfg.xml (提前提供好) d2 选择一个java project ,点击run--> hibernate code generation--> hibernate code generation configuration d3 main 选项 √ Output directory \project\src √ Package: com.og.po √ 其他默认 Exporters 选项 √ Domain code √ Hibernate XML Mappings √ DAO code √ Hibernate XML Configuration 该工具非常强大; d1、 hql editor d2、 Hibernate Query result d3、 Query parameter d4、 Hibernate Dynamic SQL Preview e、jboss tools工具:Data Management --> DataSource Explorer , 可以提供数据库连接,并可以查看数据库浏览视图,相当于一个客户端软件,可以生成ddl文件 --> SQL Scrapbook 可以书写sql语句,然后执行,生成结果视图 f、 MyEclipse 提供的数据库反向工程 3 类模型 --> ER模型 (java pojo ---> hbm.xml 映射文件 ---> db schame) a XDoclet
参考文献:
《深入浅出Hibernate》 夏昕,曹晓钢,唐勇
http://www.hibernate.org hibernate jboss tools