Example example = Example.create(object)
//创建一个查询,大致原理是根据hbm中定义和entiryname 组合具体的条件生成或缓存抓取PrepareStatement,比如你 User类有id,hbm定义为id,他会组合一个条件 ..where id=? ...
Criteria criteria = getSession().createCriteria(entityName)
//把你的查询样本的值给绑定上去,原始jdbc会发生setParameter(...)
criteria.add(example)
//查询,返回list
return criteria.list()
Hibernate工作原理是Configuration读取Hibernate的配置文件和映射文件中的信息,即加载配置文件和映射文件,并通过Hibernate配置文件生成一个多线程的SessionFactory对象。
然后,多线程SessionFactory对象生成一个线程Session 对象;Session对象生成Query对象或者Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate( )等方法对PO进行加载、保存、更新、删除等 *** 作。
在查询的情况下,可通过Session 对象生成一个Query对象,然后利用Query对象执行查询 *** 作;如果没有异常,Transaction对象将提交这些 *** 作结果到数据库中。
扩展资料:
Hibernate它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来 *** 纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。
你好,hibernate框架属于orm对象关系映射型框架。hibernate在提供了很多程序员编码便利的同时,也给一些项目有一些不好的影响,就你刚刚说的变慢,其实也不能完全这样说,通常我们 *** 作数据库的时候,传统的做法,在没有使用hibernate的时候,我们首先自己编写jdbc,自己编写sql语句,总之自己控制数据库与程序的执行。而我们使用hibernate之后,不需要那么多繁琐的 *** 作了,只需要配置hibernate的映射文件,就可以实现 *** 作数据。其实了解hibernate内部的人都知道,hibernate实际上就是封装了jdbc而已。你把你 *** 作的东西交给hibernate,让他来给你处理,以前是我们自己处理,现在是他给我们处理。明白吧。所以如果使用hibernate,在数据量不是非常大,并且对项目的性能要求不是太高的,并且能够做好hibernate的优化,比如缓存,那基本都没有太大问题。否则就要考虑使用别的方案比如ibatits (现在叫mybatits)了。希望能够帮助到你。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)