Java 持久层告别sql之hibernate
dengit_w
在一个圈子里,努力了不一定能成为最好的那一位,但绝对不允许自己差劲
展开
-
Hibernate开发流程
一个完整的hibernate 开发流程包含如下这些步骤 1. 配置Hibernate.cfg.xml 里面包含数据库连接信息,哪些HBM,是否使用2级缓存,是否显示SQL,方言等等 2. 配置 hbm 文件 大概是哪个类对应哪张表,属性对应什么字段,各种关系映射,比如ONE-MANY,MANY-ONE,MANY-MANY 3.使用HIBNERATE 通过Configuration拿到Se原创 2017-09-23 10:48:35 · 278 阅读 · 0 评论 -
Hibernate中对象的三种状态
Hibernate的缓存机制分为: 一级缓存:一级缓存是Session级缓存。通过 session.get,session.load,session.save,session.update可以将指定对象放入缓存中 (该缓存属于session自带的缓存,也就是说,创建session以及缓存就会产生)二级缓存:二级缓存是SessionFactory级缓存,缓存中的信息可以供多个Session共享。对转载 2017-09-20 16:45:48 · 184 阅读 · 0 评论 -
什么是Hibernate,好处是什么?
1.Hibernate是一个操作数据库的框架,实现了对JDBC的封装;2.Hibernate是一个ORM(对象关系映射)框架,我们在写程序时 ,用的时面向对象的方法,但是在关系型数据库里,存的是一条条的数据,为了用纯面向对象的思想解决问题,所有需要将程序中的对象和数据库的记录建立起映射关系,ORM就是这样的技术,而Hibernate就是这样一个框架,以操作对象的方式操作数据库。3.Hibernate原创 2017-09-19 14:06:47 · 13993 阅读 · 1 评论 -
怎么实现SSH的整合思路?
主体思路是:Action的创建,由本来的struts 管理,交由Spring来进行管理。 Spring在创建 Action的时候,就会注入DAO 而DAO又继承于 HibernateTemplate,并且在被Spring创建的时候,注入了SessionFactory. 由此,Action在进行业务操作的时候,比如执行execute的时候,就可以使用已经和hibernate 联系起来转载 2017-09-24 20:00:53 · 346 阅读 · 0 评论 -
1.hibernate与mybatis的区别
1.两者最大的区别:针对简单逻辑,Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。2.开发难度对比Hibernate的开发难度要大于Mybatis。主要由于Hibern翻译 2017-09-07 10:31:29 · 350 阅读 · 0 评论 -
hibernate如何提高jdbc的性能
hibernate框架是当前开源框架中对于操作数据库的主流之一,它jbdc的封装,可以说是开源框架中最便捷,易学易用的,对于开发者来说,无疑在开发速度上的大大提升,提供的跨数据库平台(hql以及数据库方言的编写和配置)也是受开发者的喜爱;那么,开发应该怎样合理正确使用hiberbate这门框架以达到对jdbc性能的提高,因为我们知道,任何对数据库封装的框架在性能和效率等上都会低于原生态的jdbc连原创 2017-09-07 22:50:57 · 303 阅读 · 0 评论 -
hibernate工作原理(非底层原理)
1.通过Configuration config = new Configuration().configure();//读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xml中的读取并解析映射信息 3.通过SessionFactory sf = config.buildSessionFactory();//创建SessionFactory转载 2017-09-07 23:10:39 · 178 阅读 · 0 评论 -
spring 整合hibernate整合方式
spring整和hibernate属于向下整合,spring的核心是管理各个类的生命周期和类与类之间的关系,所有,当提及到spring整合hibernate,就是heibinate将自己最核心的类交给spring来管理,既SessionFactory,这样一来,也相当于管理了hibernate的所有内容:包括数据源(四大基本连库信息,连接池,线程池等,),自有属性,映射文件,以下是spring整合h原创 2017-09-07 23:45:25 · 301 阅读 · 0 评论 -
fetch = FetchType.EAGER
http://blog.csdn.net/sunqing0316/article/details/43852501 做一个树形结构,但是吧就是查不出数据来,还报错: sessionis closed。当时吧,傻啦吧唧的什么也不懂,还自己一遍一遍走断点调试,返回结果是null。后来上网查资料加上找人帮忙,解决了。解决办法是这个样子滴:在实体的Many To One 关系中加上 fetch = F转载 2017-09-15 11:36:00 · 287 阅读 · 0 评论 -
hibernate 对fetch的FetchType理解
转载于JPA定义实体之间的关系有如下几种: @OneToOne @ManyToOne @OneToMany @ManyToMany 在定义它们的时候可以通过fetch属性指定加载方式,有两个值: FetchType.LAZY:延迟加载 FetchType.EAGER:急加载 急加载就好理解了,在加载一个实体的时候,其中定义是急加载的的属性(property)和字段(f转载 2017-09-15 11:25:49 · 608 阅读 · 0 评论 -
openSession与getCurrentSession的区别
Hibernate有两种方式获得session,分别是: openSession和getCurrentSession 他们的区别在于 1. 获取的是否是同一个session对象 openSession每次都会得到一个新的Session对象 getCurrentSession在同一个线程中,每次都是获取相同的Session对象,但是在不同的线程中获取的是不同的Session对象原创 2017-09-23 10:54:02 · 175 阅读 · 0 评论 -
Hibernate中session的get()和load()的区别
1.get()采用立即加载的方式;而load()采用延迟加载; 2、get()方法执行的时候,会立即向数据库发出查询语句,而load()方法返回的是一个代理(此代理中只有一个id属性),只有等真正使用该对象属性的时候,才会发出sql语句; 3、如果数据库中没有对应的记录,get()方法返回的是null。而load()方法出现异常ObjectNotFoundException 。原创 2017-09-20 16:52:26 · 167 阅读 · 0 评论