lucene总结
是一个全文检索开发框架,它的主要功能是提高检索性,例如:在实际的互联网开发项目里面,如果进行某些关键字的搜索,一定是希望尽快给出结论,而这样的搜索是不可能使用数据库实现的,因为数据库唯一可用的方式是使用LIKE字句,而这种语句需要逐行扫描,所以性能是最差的。
在2005年是Apache推出lucene开发框架,这个开发框架本身设计很好,但中文支持不好(没有中文分词器)。
分词器,是将用户输入的一段文本,按照逻辑拆分成一些关键词。例如:现在你需要搜索“中华人民共和国”,如果有了分词器,它会自动进行文字拆分,可以拆分为:中华、人民、共和国、人民共和国、华人、中国。如果没有中文分词器,以上内容就无法实现。当时国内出现了一些国人的分词器,例如:庖丁解牛.jar。
lucene如果有更好的中文分词器(适合于新版本),那么就可以一直使用下去,该搜索主要是基于文件的模式完成的,在文件里会设置一系列搜索的索引库,通过索引库进行快速检索实现。
Hibernate Session生命周期
Hibernate里面没有Session生命周期,Session严格来讲就是指每一个用户,实体层里Session有俩点作用(基于Hibernate):
1.是维护对象的状态,也就是持久态问题:如果现在使用了Session对象的get()、load()方法进行某一个数据查询,默认情况下只要Session不关闭,那就表示该Session中的对象一直与数据库中的实例关联,这个时候如果调用了POJO类的setter方法修改的数据,就会引起数据表中对应数据行的数据改变,这个就是持久态的设计,而这个设计也是Hibernate最烂的一点,十年前这是最好的设计,因为此设计与EJB(Entit Bean)效果是一样的。
2.是进行一级缓存使用的:指的是如果要进行get()、load()数据查询,只要该数据查询了一次,并且在Session不关闭的情况下继续重复使用,那对于Hibernate而言是不会继续重复发出查询指令的,而是会将对象默认保存在内存里面,如果发现有同样的主键查询,就直接通过内存加载。
Hibernate的session是在使用的时候通过SessionFactory打开(Spring整合的时候也是使用SessionFactory打开),这个打开和关闭在使用之前和之后自动处理操作。
这里有一个问题:在Spring和Hibernate整合的时候由于存在一个数据的延迟加载机制,所以Spring里面会提供一种策略:“OpenInView”指的是Hibernate的Session延迟到页面显示完毕后再进行关闭,这样就解决了数据的级联显示操作,但这种处理会对事务控制造成困难,所以此类开发好像在实际工作中没有出现过。
更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧