- 浏览: 79835 次
- 性别:
- 来自: 重庆
最新评论
-
禀圣含华:
怎么弄空格呢?___________然后我固定这些空格,怎么弄 ...
第18章. iText PDF 生成 -
super0555:
managed
第13章 Seam 应用程序框架 -
Javakeith:
代码呢?共享下代码呗!
第18章. iText PDF 生成 -
tonyshen277:
同感啊。还在做Win32下的开发,楼主所说的一个都不能少啊。
转自baidu wqqq 给软件开发初学者 -
kdboy:
的确,把人放在宇宙中去看,从上帝的眼中去看,人的确是非常渺小, ...
人生是什么
28.1. 介绍
如Apache Lucene? 之类的全文本搜索引擎是一种非常强大的技术,给应用程序带来了全文本和有效的查询。 Hibernate搜索,其使用了受保护的Apache Lucene, 用附加的几个注释索引你的域模型,关注数据库/索引同步,并且返回与全文本查询相匹配的标准的托管对象。请记住,思考,存在的不匹配,当在一个文本查询之上处理一个对象的域模型时引发的不匹配(保持数据的最新索引,索引结构与域模型的不匹配,查询不匹配)。但是,快速有效的好处远远地超过了这些局限性。
Hibernate搜索旨在很好地整合,并尽可能自然地使用JPA和Hibernate。作为一个自然延伸,JBoss Seam提供了一个Hibernate搜索集成。
Hibernate搜索对象的详细信息,请参考Hibernate搜索文档 。
28.2. 配置
Hibernate搜索使用META-INF/persistence.xml或hibernate.cfg.xml 文件进行配置
Hibernate搜索配置对大多数配置参数存在智能默认 。这里是一个入门的最小的持久化单元配置。
<persistence-unit name="sample">
<jta-data-source>java:/DefaultDS</jta-data-source>
<properties>
[...]
<!—使用一个基于索引的文件系统 -->
<property name="hibernate.search.default.directory_provider"
value="org.hibernate.search.store.FSDirectoryProvider"/>
<!—索引将被存储的目录 -->
<property name="hibernate.search.default.indexBase"
value="/Users/prod/apps/dvdstore/dvdindexes"/>
</properties>
</persistence-unit>
如果你打算瞄准Hibernate注释或EntityManager 3.2.x (嵌于JBoss AS 4.2.GA内部的), 你也需要配置适当的事件侦听器。
<persistence-unit name="sample">
<jta-data-source>java:/DefaultDS</jta-data-source>
<properties>
[...]
<!-- 使用一个基于索引的文件系统 -->
<property name="hibernate.search.default.directory_provider"
value="org.hibernate.search.store.FSDirectoryProvider"/>
<!-- 索引将被存储的目录 -->
<property name="hibernate.search.default.indexBase"
value="/Users/prod/apps/dvdstore/dvdindexes"/>
<property name="hibernate.ejb.event.post-insert"
value="org.hibernate.search.event.FullTextIndexEventListener"/>
<property name="hibernate.ejb.event.post-update"
value="org.hibernate.search.event.FullTextIndexEventListener"/>
<property name="hibernate.ejb.event.post-delete"
value="org.hibernate.search.event.FullTextIndexEventListener"/>
</properties>
</persistence-unit>
注意
如果使用的是Hibernate注释或EntityManager 3.3.x,这步就不再需要了。
除了配置文件之外,下面的jar包必须被部署:
- hibernate-search.jar
- hibernate-commons-annotations.jar
- lucene-core.jar
注意
如果你在一个EAR中部署了它们,不要忘了更新application.xml。
28.3. 用法
Hibernate搜索使用注释映射实体到一个Lucene索引,详情请查参考文档 。
Hibernate搜索完全整合了API和JPA/Hibernate语义。 仅几行代码,就可以从一个HQL或基于查询请求的条件(Criteria)进行转换。与应用程序交互的主要API是FullTextSession API(Hibernate会话的子类 Session)。
当Hibernate搜索被引入, JBoss Seam就可注入一个FullTextSession。
@Stateful
@Name("search")
public class FullTextSearchAction implements FullTextSearch, Serializable {
@In FullTextSession session;
public void search(String searchString) {
org.apache.lucene.search.Query luceneQuery = getLuceneQuery();
org.hibernate.Query query session.createFullTextQuery(luceneQuery, Product.class);
searchResults = query
.setMaxResults(pageSize + 1)
.setFirstResult(pageSize * currentPage)
.list();
}
[...]
}
注意
FullTextSession继承了org.hibernate.Session,所以,它可以被用来作为一个标准的Hibernate会话。
如果使用Java持久化API, 一个更流畅的集成被提议。
@Stateful
@Name("search")
public class FullTextSearchAction implements FullTextSearch, Serializable {
@In FullTextEntityManager em;
public void search(String searchString) {
org.apache.lucene.search.Query luceneQuery = getLuceneQuery();
javax.persistence.Query query = em.createFullTextQuery(luceneQuery, Product.class);
searchResults = query
.setMaxResults(pageSize + 1)
.setFirstResult(pageSize * currentPage)
.getResultList();
}
[...]
}
当Hibernate搜索被引入,就可注入一个FulltextEntityManager。FullTextEntityManager 继承了EntityManager的搜索特殊方法, 以同样的方式FullTextSession继承了会话 。
当使用EJB 3.0 会话或消息驱动Bean注入 (如,通过@PersistenceContext 注释), 在声明语句中用FullTextEntityManager接口替换EntityManager接口是不可能的。然而,注入实现可以是FullTextEntityManager实现:向下转型就可以了。
@Stateful
@Name("search")
public class FullTextSearchAction implements FullTextSearch, Serializable {
@PersistenceContext EntityManager em;
public void search(String searchString) {
org.apache.lucene.search.Query luceneQuery = getLuceneQuery();
FullTextEntityManager ftEm = (FullTextEntityManager) em;
javax.persistence.Query query = ftEm.createFullTextQuery(luceneQuery, Product.class);
searchResults = query
.setMaxResults(pageSize + 1)
.setFirstResult(pageSize * currentPage)
.getResultList();
}
[...]
}
警告
对于习惯在Seam之外使用Hibernate搜索的人,注意, 使用Search.createFullTextSession 是没有必要的。
Hibernate搜索的具体应用请查看JBoss Seam 发布的DVDStore 或者blog例子 。
发表评论
-
第31章. Seam内建组件
2009-05-28 11:51 1459第31章. Seam内建组件 本章描述Seam内建组件 ... -
第30章. Seam注释
2009-05-26 20:21 1593第30章. Seam注释 在你编写一个Seam应用程 ... -
第31章. Seam内建组件
2009-05-26 20:21 1421第31章. Seam内建组件 本章描述Seam内建组件 ... -
第29章. 配置Seam和打包Seam应用程序
2009-05-26 20:19 1537第29章. 配置Seam和打包Seam应用程序 配置 ... -
第27章. Spring框架集成
2009-05-26 20:16 1393第27章. Spring框架集成 Spring集成 ... -
第26章. Seam和Google网页工具
2009-05-26 20:15 1214第26章. Seam和Google网页工具 ... -
第25章. 远程
2009-05-26 20:15 1268第25章. 远程 Seam 提供了一个从网页远程访 ... -
第24章. Web服务
2009-05-26 20:15 1676第24章. Web服务 Seam 集成了JBossWS, ... -
第23章. 缓存
2009-05-26 20:14 1413第23章. 缓存 在 ... -
第22章. 异步和消息
2009-05-26 20:12 2122第22章. 异步和消息 Seam 使异步执行来自网页请 ... -
第21章. Email
2009-05-26 20:11 1310现在Seam包含一个用于模板和发送邮件的可选组件。 Emai ... -
第 20章. RSS支持
2009-05-26 20:10 818第 20章. RSS支持 20.1. 安装 20.2. ... -
第19章. 微软的Excel 电子表格应用程序支持
2009-05-26 20:07 1821第19章. 微软的Excel 电子表格应用程序支持 S ... -
第18章. iText PDF 生成
2009-05-26 20:01 6471第18章. iText PDF 生成 18.1. 使用PDF ... -
第17章. Seam文本
2009-05-26 19:59 1022第17章. Seam文本 面向协作站点需要一种更有友好的 ... -
第16章. 国际化、本地化和主题
2009-05-26 19:57 1383第16章. 国际化、本地化和主题 Seam使构建国际化应用程 ... -
第15章 安全(2)
2009-05-26 19:56 930第15章 安全(2) 15.5. 错误消息 安全 ... -
第15章 安全(1)
2009-05-26 19:53 97715.1. 概述 Seam安全API为你基于Seam的 ... -
第14章 Seam 和 JBoss 规则
2009-05-26 19:50 1427第14章 Seam 和 JBoss 规则 Seam使从 ... -
第13章 Seam 应用程序框架
2009-05-26 19:49 1402第13章 Seam 应用程序框架 Seam真正地使通过 ...
相关推荐
### 关于 "org.springframework.orm.hibernate3.LocalSessionFactoryBean" 未找到问题的知识点解析 #### 一、问题背景 在开发基于Spring与Hibernate整合的应用时,可能会遇到“`org.springframework.orm.hibernate...
标题 "org.hibernate.ejb-library-3.4.0.GA-A" 指示这是一个与Hibernate相关的库,特别针对EJB(Enterprise JavaBeans)版本3.4.0,并且是为OSGi环境优化的。描述中提到它适用于在Virgo Jetty服务器上进行Web开发,...
Hibernate Session 绑定线程解决方案 在 Java web 开发中, Hibernate 是一个非常流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在使用 Hibernate 进行数据库操作时,...
包含hibernate所有所需jar包还有一些其他包日志包、jpa支持包等: 列如:hibernate-core-5.1.0.Final.jar hibernate-ehcache-5.1.0.Final.jar hibernate-entitymanager-5.1.0.Final.jar hibernate-envers-5.1.0....
org.hibernate.jpa.QueryHints jar hibernate-entitymanager-4.3.0.Final.jar
org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider] at org.hibernate.service.internal....
Hibernate.jar包,Hibernate可以应用在任何使用JDBC的场合,包含 hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-...
org.hibernate.eclipse.feature_3.2.3.GAorg.hibernate.eclipse.feature_3.2.3.GA
ehcache 二级缓存 配置使用的jar包 配置如下: <!-- 启用二级缓存 --> <property name="hibernate.cache.use_second_level_cache">true <!-- 查询的二级缓存配置 --> <property name="hibernate....
《韩顺平.2011版.hibernate笔记》是一份针对Hibernate框架的详细学习资料,由知名IT讲师韩顺平在2011年编撰而成。Hibernate是Java开发领域中广泛使用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者...
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.connection.C3P0ConnectionProvider] as strategy [org.hibernate.engine.jdbc.... ...
jar包,官方版本,自测可用
Hibernate提供了第一级缓存(Session缓存)和第二级缓存。第二级缓存可以使用第三方插件如Ehcache或Infinispan: ```xml <property name="hibernate.cache.use_second_level_cache">true <property name="hibernate....
在eclipse上通过hibernate工具,将数据库表生成Java类和xml配置文件 总共有2个版本,根据自己的需求使用版本3或者5: 1. hibernate-tools-3.4.0.CR2.jar是修改完成的jar包,直接替换原来的jar包, 重启eclipse即可...
问题描述 用SpringBoot + Spring Data JPA操作数据库 项目启动的时候 报了一个错 SpringBoot的版本是2.2.6.RELEASE org.springframework.beans.factory.BeanCreationException: Error creating bean with name '...
《Manning.Java.Persistence.with.Hibernate》一书是Hibernate领域的权威指南,由Hibernate项目的主导开发者撰写,深入浅出地讲解了Hibernate框架的核心概念、架构设计、配置方法以及在实际开发中的应用技巧。...
解决目前memcached不支持hibernate4的缺陷,hibernate配置<property name="hibernate.cache.region.factory_class">com.googlecode.hibernate.memcached.MemcachedRegionFactory</property>
标题 "maven+hibernate" 暗示我们讨论的是使用 Maven 作为构建工具,与 Hibernate 这一流行的对象关系映射(ORM)框架整合的项目。在Java开发中,Maven 和 Hibernate 是两个非常重要的组件。Maven 用于自动化项目的...
Hibernate支持第二级缓存,可以提高性能。`<cache>`元素用于配置缓存提供者和实体类的缓存策略。 **5. Transaction Configuration** `<transaction>`元素用来配置事务管理器,例如JTA或Hibernate自身的Transaction...