![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hibernate
文章平均质量分 70
一路走来的自己
成长,成功,都由自己选择
展开
-
hibernate--get load延迟加载的问题
一 get load区别1 User u=(User)session.get(User.class,id)方式 会直接获取数据库对象 没有什么代理 直接打印SQL语句 User u=(User)session.load(User.class,id)方式 会获得一个代理对象 其中这个代理对象有一个ID属性 其他属性并没有 在调用其他属性时候 才会全部加载 从数据库查询 发出SQL U原创 2015-12-29 22:25:02 · 631 阅读 · 0 评论 -
hibernate--关系映射归纳和总结
前言:hibernate关系映射十分重要,对于掌握hibernate是必备的知识,关系映射分为一对一 一对多 多对一 多对多 看起来关系关系复杂,但其实了解其中原理就可以灵活自如运用。在了解详细分类之前,有一些点和关键系必须掌握其意义:cascade关键词:表示级联包括add update delete 一般情况不使用 不好。 作用:一般在保存对象时 需要先显原创 2015-12-31 23:11:53 · 1440 阅读 · 0 评论 -
Hibernate--fetch抓取策略
有几个需要注意的地方:1 在xml配置中 是默认懒加载的(fetch=select),也就是在使用到懒加载对象的属性时候 才会发出SQL语句,不使用的话就发一个SQL即可,若遍历时使用关联对象的属性,那么会发出大量SQL,而这是我们不希望看见的很多情况下 我们是要希望能使用fetch=Join 也就是实现全部加载 只发出一条SQL,即使没有显示的使用关联对象属性仍然全部加载,此SQL使用原创 2016-01-08 15:16:17 · 6019 阅读 · 0 评论 -
hibernate--一级和二级缓存(使用Ehcache)以及查询缓存
有一下几点需要理清才行:一级缓存是session缓存 session关闭就小时二级缓存是sessionFactory级别的缓存 一个应用程序只有一个 多个线程共享 不要把经常修改的对象放到二级缓存中 二级缓存中放一些查询的对象1 首先是在hibernate,cfg.xml文件中进行配置:添加下列配置项 true org.hibernat原创 2016-01-08 15:58:45 · 972 阅读 · 0 评论 -
hibernate--悲观锁-乐观锁的并发问题
首先要知道以下的注意点:1 更新丢失的问题: 用两个testCase一起运行模拟多线程并发 两个线程同时修改一个对象 会产生更新丢失的问题 慢的那个保留了以前的东西 使得快的修改的东西没有作用2 解决办法解决并发问题: 1 悲观锁 (一般不用 ) * 是Hibernate基于数据库的机制来实现的,此时hib原创 2016-01-08 16:12:07 · 495 阅读 · 0 评论 -
hinernate--推荐使用原生SQL语句进行查询(效率高)
需要注意以下几点:1 select * from t_stu where name like ?注意要加上这个addEntity 因为默认返回Obect数组 注意addEntity()里面的对象都是可以进行持久化的数据库对象 DTO对象不可以使用这个方法 session = HibernateUtil.openSession();原创 2016-01-08 16:28:03 · 2076 阅读 · 1 评论 -
Hibernate--最佳实践 重要
使用hibernate的最佳实践:1 在做关系的时候 尽可能使用单向关联 不要使用双向关联2 在大项目中 如果数据量超过百万行的项目 使用Hibernate可以酌情考虑一下几个原则:2.1重要:不要使用对象关联 尽可能使用冗余字段来替代外键(带来的问题就是必须修改所有的冗余) 因为百万条数据 如果使用外键来跨表查询 那么性能会非常的慢 比如model1的设计原创 2016-01-08 16:32:00 · 1180 阅读 · 0 评论 -
hibernate--annotation的使用
1 首先要把mapping标签的resource=换成class=2注意很多类 都是从javax.persistence中来的 要注意student.java@Entity@Table(name="t_stu")//@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)//开启二级缓存 缓存对象//对该对象加锁是为了修改安全 这种经常修改原创 2016-01-08 16:41:47 · 416 阅读 · 0 评论