
hibernate
文章平均质量分 80
hibernate操作数据库
拾光师
瞧一瞧,看一看,好吃还不贵。量大管饱
多年java开发经验,现征战于互联网广告行业
分享各种java相关知识,每周更新
展开
-
hibernate缓存
一级缓存是session级别的缓存,且是一种强制使用的缓存,不可以关闭,保证一个session中两次请求同一个对象时,取得的对象是同一个Java实例。二级缓存是属于sessionFactory的外置缓存,默认情况下hibernate是不会启用的,需要第三方的插件。一级缓存 session级别的缓存,属于事务范围的缓存,由hibernate来管理。SwarmCache 可作为集群范围内的缓存,不支持hibernate的查询缓存。EHCache 可作为进程范围内的缓存,支持hibernate查询缓存。原创 2024-04-08 09:54:01 · 473 阅读 · 0 评论 -
hibernate批量操作
通过session批量操作时:session的save()及update()方法会把处理的对象存放在自己的缓存中,如果使用session来处理大量持久化对象,需要及时从缓存中清空已经处理完毕且不会再访问的对象(处理完一批对象后,立即调用flush()方法刷新缓存,然后调用clear()方法清空缓存)通过同一个StatelessSession加载相同OID的对象,会得到两个具有不同内存地址的对象。调用save()、update()、delete()方法时会立即执行SQL语句。有以下四种方式来进行批量操作。原创 2024-04-07 10:09:44 · 1021 阅读 · 0 评论 -
hibernate检索方式
默认情况下hibernate查询返回的是一个个的Object[],如果查询部分字段的话,需要一个一个的去遍历赋值。HQL检索方式和本地检索方式可以使用Transformers的aliasToBean方法来返回一个结果转换器。HQL检索方式:使用面向对象的HQL(Hibernate Query Language)查询语言Query。setParameter() 绑定任意类型的参数,该方法的第三个参数显示指定Hibernate映射类型。OID检索方式 :使用OID来获取对象get()和load()方法。原创 2024-04-06 15:21:09 · 394 阅读 · 0 评论 -
hibernate检索策略
延迟检索:在调用load方法时不会执行select语句,而是返回一个代理对象,这个代理对象继承了原来对象的所有属性和方法(使用CGLIB生成的代理类),该代理类的实例仅初始化OID,所以占用的内存较少,只有在使用具体属性(除id之外的属性)的时候才会去执行select语句。extra 在调用iterator()方法时会进行初始化,而调用size()、isEmpty()、contains方法时,不会进行初始化,而是通过特定的select语句来查询必要的信息,而不是检索所有的对象。原创 2024-04-05 14:30:40 · 1128 阅读 · 0 评论 -
hibernate关联关系
从Order到Customer是多对一关联,从Customer到order是一对多关联,如果仅有从Order到Customer的关联或者仅有从Custom到Order的关联的话,称为单向关联,如果同时包含两种关联,称为双向关联。上面建立了order到customer的多对一关联,但是这样在操作customer的时候还要再去手动的去查所对应的order,这样操作很是麻烦,所以在建立从customer到order的一对多关联,这样就构建成了一个双向关联。Many-to-Many 多对多关系。原创 2024-04-04 14:05:03 · 646 阅读 · 0 评论 -
hibernate OID映射对象标识符
默认为hibernate_unique_key表的next_hi字段 注意:hilo的方式需要在单独的事务中处理,不使用session对象的当前数据库连接和事务,而是单独的在一个新的数据库连接中创建新的事务,与spring结合时以及配置数据源时注意不可使用该方式生成。关系型数据库通过主键来区分同一张表的不同数据,java语言使用内存地址来区分同一类的不同对象,hibernate则使用OID来同一两者之间的矛盾,在运行时,hibernate通过OID来维持java对象和数据库表中记录的对应关系。原创 2024-04-03 10:02:14 · 504 阅读 · 0 评论 -
hibernate session接口
session能够在某些时间点,按照缓存中对象的变化来执行相关的SQL语句,来同步更新数据库,这一过程称为刷新缓存(flush)。一般情况下,游离对象是由持久化对象转变过来的(session进行close、clear、evict等情况),数据库中可能还存在它对应的记录,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离状态。session实例没有结束生命周期,且没有清理缓存,则存放在session缓存中的对象也不会结束生命周期,session缓存可以减少访问数据库的频率。原创 2024-04-02 09:58:25 · 1086 阅读 · 0 评论 -
hibernate开发步骤
使用非final的类:如果没有实现接口的话,hibernate会使用cglib来生成代理,final类不可以生成cglib代理。提供一个无参构造器:hibernate使用Constructor.newInstance()来实例化。实体类的字段要声明get/set方法:hibernate通过get/set方法来获取字段。通过hibernate访问数据库。创建hibernate配置文件。hibernate访问数据库。hibernate开发步骤。hibernate配置文件。hibernate映射文件。原创 2024-03-31 13:52:21 · 625 阅读 · 0 评论 -
hibernate映射文件详解
有些属性的值需要在运行时进行计算才可以获取到,此时可以使用property元素的formula属性,该属性用来设置一个SQL表达式,hibernate根据SQL来计算出派生属性的值。class属性的dynamic-insert属性 默认为false,如果为true,表示当保存一个对象时,会动态的生成insert语句,仅包含取值不为null的字段。class属性的dynamic-update属性 默认为false,如果为true,表示当更新一个对象时,会动态的生成update语句,仅包含需要更新的字段。原创 2024-03-30 11:34:06 · 403 阅读 · 0 评论 -
hibernate是什么
事件及事件监听接口:在Hibernate中,针对每种事件都有相应的事件监听器,如加载对象会触发org.hibernate.event.LoadEvent事件,该事件由org.hibernate.event.LoadEventListener监听器处理。Session被称为持久化管理器,它提供了和持久化相关的操作,如保存、更新、删除、加载和查询对象,是hibernate运作的中心,所有持久化对象必须在session管理下才可以进行持久化操作。需要很大的缓存来存放预定义的SQL语句及映射元数据等。原创 2024-03-28 10:39:18 · 719 阅读 · 0 评论 -
hibernate之session接口
原文链接http://zhhll.icu/2020/12/04/%E6%A1%86%E6%9E%B6/hibernate/session%E6%8E%A5%E5%8F%A3/session接口Session接口是hibernate向应用程序提供的操纵数据库的最主要的接口,提供了保存、更新、删除和加载Java对象的方法。session具有一个缓存,位于缓存中的对象成为持久化对象,和数据库中的相关记录对应。session能够在某些时间点,按照缓存中对象的变化来执行相关的SQL语句,来同步更新数据库,这一过原创 2021-03-17 09:42:51 · 297 阅读 · 1 评论 -
hibernate中OID代表什么
原文链接http://zhhll.icu/2020/12/12/%E6%A1%86%E6%9E%B6/hibernate/OID%E6%98%A0%E5%B0%84%E5%AF%B9%E8%B1%A1%E6%A0%87%E8%AF%86%E7%AC%A6/OID映射对象标识符OID存在的意义关系型数据库通过主键来区分同一张表的不同数据,java语言使用内存地址来区分同一类的不同对象,hibernate则使用OID来同一两者之间的矛盾,在运行时,hibernate通过OID来维持java对象和数据库表中原创 2021-03-15 11:16:44 · 364 阅读 · 1 评论 -
hibernate简介
第一章 hibernate简介原文链接https://zhhll.icu/2020/框架/hibernate/基础/1.hibernate简介/ORM(Object Relation Mapping)对象关系映射思想:将关系数据库中表中的记录映射为对象,以对象的形式展现,可以把对数据库的操作转化为对对象的操作。采用元数据来描述对象-关系映射细节,元数据通常采用XML格式,存放在专门的对象-关系映射文件中。hibernate是一个老牌的ORM框架,通过hbm.xml映射文件维护Java和数据库表之间的关原创 2021-03-11 11:51:00 · 5422 阅读 · 1 评论