Hibernate 自动化工具集

                                                    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

原文地址:https://www.cnblogs.com/sunormoon/p/3069938.html