`
doris
  • 浏览: 28748 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

读hibernate源码:解决org.hibernate.hql.antlr包为空

阅读更多
一直想学习下hibernate的源码,但是一直杂事不断,总是忘记,今天忽然想起来,拖了好几个月了,于是把hibernate的src目录下的内容导入eclipse的新项目中,准备空了学习下。
导入源码,配置好build path,却发现还有好多错误,竟然是org.hibernate.hql.antlr包里没有类,只有一个package.html文件,打开,里面写着:
NOTE: The classes in this package are generated from the ANTLR grammar files,
do not register them into version control.

大略意思是这个包的类是由ANTLR语法文件产生的,不包含在版本控制中。
疑惑,ANTLR语法是什么,不包含在这里又放在哪里了?
于是查看hibernate的其他目录,看到了一个\grammar目录,其中有三个.g文件,用editplus打开,是包含header,options,tokens...之类的结构,有点像一个文法定义的形式,看到里面定义的类,就是缺失的类,那么,应该是由这个目录产生源码了,那怎么产生呢?
又翻了翻,最外面有几个build.*的文件,build.bat,build.sh,build.xml,.bat是在windows下的,.sh是linux下的,都打开看了看:java -cp "lib/ant-launcher-1.6.5.jar" ...,看不明白,再打开build.xml,好长,看看里面有没有grammar,于是搜索关键字'grammar',竟然真有,那或许就是从这里产生吧,那么就执行下build.bat试一下。
执行完build.bat,在 该目录下产生了一个build子目录,打开,是gensrc子目录,一级级打开,最里面就是缺失的包,太好了,拷到对应的目录下,刷新,eclipse不包错了,ok

然而,还不知道什么是antlr,google了一下,找到一个定义:
ANTLR(ANother Tool for Language Recognition)它是这样的一种工具,它可以接受词文法语言描述,并能产生识别这些语言的语句的程序。作为翻译程序的一部分,你可以使用简单的操作符和动作来参数化你的文法,使之告诉ANTLR怎样去创建抽象语法树(AST)和怎样产生输出。ANTLR知道怎样去生成识别程序,语言包括Java,C++,C#.
分享到:
评论
2 楼 normantian 2011-01-05  
你好,请问你的配置build path,是如何配置的?请教下高人
1 楼 ioworker 2009-03-16  
不错, 学习了, 对我很有帮助,  

相关推荐

    解析HQL所需要的文件

    Hibernate在解析HQL生成SQL时需要的Java文件。压缩包里三个以.g为后缀的是规则文件,以.java为后缀的文件需要拷贝到Hibernate的源码org.hibernate.hql包下,便可运行

    hibernate开发jar包集合

    6. **antlr-*.jar**:ANTLR是一个强大的解析器生成器,Hibernate使用它来解析HQL(Hibernate Query Language)和JPQL(Java Persistence Query Language)。 7. **dom4j.jar**:DOM4J是一个用于处理XML的Java库,...

    hibernate-core.zip

    1. `antlr.jar`:Antlr是一个强大的解析工具,用于构建词法分析器、语法分析器和解析器,Hibernate使用它来处理HQL(Hibernate查询语言)和Criteria API。 2. `dom4j.jar`:这是一个Java文档对象模型库,Hibernate...

    hibernater3.x部分类

    然而,正如描述所提及的,Hibernate官网的某些包可能存在不完整的情况,比如“org.hibernate.hql.antlr”包中可能缺失了一些类文件。ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于...

    hibernate框架源码

    `grammar`目录可能包含了Hibernate解析器的词法和语法定义,如ANTLR(ANother Tool for Language Recognition)生成的文件,这些文件定义了HQL和Criteria API的解析规则。 通过阅读和分析这些源代码,开发者可以更...

    hibernate-3.2.6-src_b.rar

    阅读Hibernate源码可以帮助开发者理解ORM框架的设计原理,提升数据库操作效率,同时也能学习到如何设计高性能、可扩展的系统。例如,了解SessionFactory的生命周期管理,可以优化应用的启动性能;研究Session的缓存...

    Hibernate包含的jar包

    2. **cleanimports.jar**:这个jar包通常包含清理Java源代码中导入的工具,它可能不是Hibernate核心库的一部分,但在某些项目中,可能被用来优化源码的导入管理。 3. **cglib-2.2.jar**:CGLIB (Code Generation ...

    hibernate-jpa学习

    总的来说,Hibernate-JPA结合了JPA的标准化和Hibernate的灵活性,为Java开发提供了强大的数据持久化解决方案。理解并掌握这些知识点,将有助于我们更高效地进行数据库操作,减少与数据库交互的复杂性,提升开发效率...

    antlr-2.7.7

    ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,...ANTLR的灵活性和强大功能使得它在处理各种语言和规范时都表现出色,而与JSTL和Hibernate的结合则为Java应用程序提供了更全面的解决方案。

    struts2.0+hibernate3.1+spring2.0实例源码的jar1

    6. antlr-2.7.6.jar:ANTLR是一个解析器生成器,用于构建解析器和词法分析器,可能在Hibernate中用于处理HQL或SQL语句。 7. cglib-nodep-2.1_3.jar 和 cglib-2.1.3.jar:这两者都是代码生成库,CGLib是用于创建子类...

    Spring + JPA + Hibernate配置

    - `antlr-2.7.6.jar` 提供了ANTLR解析器生成器,用于处理HQL和Criteria查询的语法解析。 - `log4j.jar` 是一个流行的日志记录框架,用于收集和管理应用的日志信息。 - `dom4j-1.6.1.jar` 是一个XML处理库,Hibernate...

    Hibernate二级缓存的应用

    - `antlr-2.7.7.jar`: 语法分析库,Hibernate使用它解析HQL语句。 - `dom4j-1.6.1.jar`: XML处理库,用于处理Hibernate的配置文件。 - `hibernate-ehcache-4.1.7.Final.jar`: Hibernate与EHCache的集成库,实现了二...

    Hibernate快速起步

    Hibernate使用ANTLR解析HQL(Hibernate查询语言)和JPQL(Java Persistence Query Language)。 4. `commons-collections-3.1.jar`: Apache Commons Collections是Apache软件基金会的一个项目,提供了大量对集合...

    integer with spring struts hibernate mybatis jpa

    它提供了一种规范化的ORM解决方案,可以与不同的ORM实现(如Hibernate)一起工作,使得应用程序能在不同的数据库上运行。 6. **标签中的“源码”和“工具”**:这可能意味着提供的压缩包包含了这些框架的源代码或者...

    spring 3.0.4 +hibernate3.6+mybatis3.0.4+struts 2.1.8+freemark整合

    `c3p0`是数据库连接池,`commons-collections`提供通用集合操作,`antlr`支持HQL解析,`hessian`用于远程方法调用,`log4j`提供日志服务,`cglib`用于动态代理,`commons-collections`则提供通用集合操作。...

    Struts2.1.8+Spring3.0.2+hibernate3.5.1

    此版本包含了对JPA(Java Persistence API)的实现,支持HQL(Hibernate Query Language)和 Criteria 查询,使得数据库交互更加便捷和灵活。 在提供的压缩包文件中,我们可以看到以下组件: 1. `hibernate3.jar` ...

    ssh 需要的jar包汇总

    在Hibernate中,ANTLR用于解析HQL(Hibernate Query Language)和Criteria API。 8. **standard.jar**:这个jar包通常与JSTL(JavaServer Pages Standard Tag Library)相关,用于在JSP页面中处理XML和HTML标签。 ...

    struts2+spring3+hibernate3+jquery+springside 做一个OA2

    Hibernate3 提供了强大的查询语言HQL和 Criteria API,允许开发者以对象的方式操作数据库,降低了SQL的直接使用。 4. **jQuery**: jQuery 是一个JavaScript库,它简化了DOM操作、事件处理、动画创建和Ajax交互。在...

    一名初学者关于SSH整合的问题

    - **antlr-2.7.7.jar**:ANTLR是一个解析器生成器,用于构建解析和生成代码,Hibernate的HQL解析可能用到了这个库。 - **com.springsource.net.sf.cglib-2.2.0.jar**:CGLIB是一个代码生成库,Spring用它来创建代理...

Global site tag (gtag.js) - Google Analytics