zoukankan      html  css  js  c++  java
  • 小白的进阶之路11

    想着做个项目,奈何前端是我的弱项,只会写一下div+css,好不容易写好了,发现css引不进入,老是报错,说什么路径不对,一气之下,我就css样式改成了内联式。

    忙活了一上午,想实现保存客户的功能,可就是有一点出bug了,servlet老是跳不过去,一直在报404的错误,

    只好放弃,回头再想,现在继续往下学。

    hibernate的第二天。

    引入一个概念:持久类:就是javabean+XXX.hbm.xml

    就是注意在生成javabean的类时,要配置xml文件,以及核心的xml文件。

    最后就是主键的问题,

    UUID,则自动生成主键,此主键是字符串类型,而且较长。

    native则是自动递增。属于int型。

    一般推荐这两种。

    对象的三个状态:瞬时态--》持久态--》脱管态

    这就是瞬时态,无主键ID,无session。(黑户)

     

    这是持久态,有主键,有session。

    这是脱管态,有id,无session。(丧偶)

     持久态对象有自动更新数据库的能力。

    为什么会这样?

    为什么持久态对象由自动更新数据库的能力?

    因为session的一级缓存。

    那么。问题来了,什么是缓存?

    缓存就是在内存中开辟一片空间,将数据放在其中,再次获取的时候可以直接拿,就提高了程序的性能。

    hibernate支持二级缓存,一级缓存是session,session的底层是集合链表 list。二级缓存是sessionfactory。

    但是二级缓存需要手动连接,多个session可以共享数据。

    session的以及缓存可以证明。

    另外一种证明方式,就是两次查询同一个对象,然而显示一条SQL语句。

     

    那么?为什么还要有session.update();呢?

    事务是一组操作,要么同时成功。要么同时失败。

    事务的特性:原子性:事务不可分割

          一致性:操作前后保持数据完整。

          隔离性:事物之间相互隔离,不可干扰。

          持久性:事务一旦提交,数据永久保持。

    如果不考虑隔离性,则会引发一些读的问题:①脏读:一个事务读到了另一个事务没提交的数据

    ②不可重复读:一个事务读到了另一个事务已经提交的update数据,导致查询结果不一致。

    ③:虚读:一个事务读到了另一个事务已经提交的insert数据,导致查询结果不一致。

    如何解决这些问题?

    通过设置数据库的隔离级别。

    未提交读:什么都可能发生

    已提交读:避免了脏读,但是虚读和不可重读可能发生

    可重复读:避免了脏读,不可重复读,但虚读可能发生。

    串行化:最安全,啥都能隔离。

    在hibernate中,有默认的隔离级别

    可以通过代码来改动隔离级别,在hibernate.cfg.xml中,<property name="hibernate.connection.isolation">1/2/4/8</property>

    一般mysql默认4,oracle默认2.

    乐观锁中,在javabean中添加一个属性:private Integer verson;并且在在实体类配置文件中加上<version name="verson"/>

  • 相关阅读:
    299. Bulls and Cows
    Canvas实现文字散粒子化
    jQuery触发a标签点击事件-为什么不跳转
    Java 理论与实践: 正确使用 Volatile 变量
    图片全屏背景 代码实例
    Canvas 唯美雨落代码实现
    开发过程中资源限制的挑战
    死锁
    如何减少并发编程中的上下文切换
    Cookie工具类
  • 原文地址:https://www.cnblogs.com/hanmengdi/p/9440961.html
Copyright © 2011-2022 走看看