Hibernate_1(自用)

持久层的全自动框架,
1、它是对jdbc API进行封装。
2、大大的简化了持久层的开发。
3、Hibernate可以完全隔离数据库,解耦项目和数据库的依赖关系。

PO(持久化对象)
PO=POJO+XML映射对象

C3P0是一个开源的数据源,目前使用它的框架有Hibernate、Spring等、

Hibernate的状态:
瞬态:对象由new操作符创建,尚未与session关联的对象被认为处于瞬态。瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识。
持久化状态:持久化实例在数据库中有对应的记录,并拥有一个持久化标识。持久化对象必须与指定session关联。Hibernate会检测到处于持久化状态对象的改动,在当前操作执行完成时将对象数据写回数据库,开发者不用手动执行update更新数据库。
脱管状态:某个实例曾经处于持久化状态,但随着与之关联的session被关联,该对象就变成托管状态,脱管对象的引用依然有效,对象可继续被修改,如果重新让脱管对象与某个session关联,该对象将重新转换为持久化状态,而脱管期间的改动也可以被写入数据库。
在这里插入图片描述

瞬态转换为持久化状态:
save(Object obj)、persist(Object obj)
当没有主键时,我们可以指定主键.
save(Object obj,Object pk)\、persist(Object obj,Object pk)
结论: 这两个方法都是将瞬态转换为持久化,但是sace有返回值,返回值是标识属性,而 persist没有返回值
load()、get()
返回值不同,get方法没有查到对象时,会返回null,load方法会抛出一个异常。如果指定了延迟加载,load方法则会返回一个未初始化的代理对象,直到程序调用该代理对象的某个方法时Hibernate才真正去访问数据加载数据记录。

脱管状态转换为持久化状态
update():将脱管状态的对象转换为持久化状态再次与session关联。
updaeOrSave():用于不清楚对象是否曾经持久化过,该方法会自动判断对象判断。如果持久化过,则调用update方法;否则调用save方法。
merge():可将程序对脱管对象所做的修改保存到数据库,但与update方法方法最大的区别是merge方法不会持久化该对象,也就是说,执行了merge方法仅是将对象的属性保存到数据库,对象本身仍然不是持久化状态,不会被关联打session上。
lock():用于将脱管状态的对象重写持久化,但该脱管对象必须没有修改过。lock方法可以搭配多种LockMode模式使用

持久化状态装换为瞬态
delete():将持久化实例改变为瞬态,并且删除该实例对应的数据记录,但是内存中还是存在。

ThreadLocal是什么?
为了解决多线程程序的并发问题,提供的一种新的思路,使用这个工具类可以很简洁的编写出优美的多线程程序。ThreadLocal它不是一个线程,而是线程的一个本地化对象,
当工作于线程的对象使用ThreadLocal维护变量时,它为每个使用该变量的线程分配一个独立的 ·变量副本,所有每一个线程都可以独立的改变自己的副本,而不会影响其他线程所对应的副本。
ThreadLocal常用方法是get()(获取当前线程的局部变量)和set()(设置当前线程的局部变量)。

ThreadLocal是如何做到为每一个线程维护一份独立的变量副本,实现思路:ThreadLocal类中有一个Map,用于存储一个线程变量副本,Map中Key对应的线程对象,value对应线程的变量副本。

ThreadLocalh与线程同步机制的比较:
在同步机制中,通过对象的锁机制保障同一时间只有一个线程访问变量,这时变量是多个线程共享的,使用而ThreadLocal它是一种新的思路,从另外一个角度解决多线程的并发访问,它为每个线程提供一个独立的副本,从而也就不需要同步了。
概况起来说,对于多线程资源共享的问题。线程同步机制采用了时间换取空间的方式,即访问串行化,对象共享化。ThreadLocal采用以空间换时间的方式即访问并行化,对象独享化。

设计模式是一套被反复使用多人知晓的经过分类编目的,代码设计经验的总结,使用设计模式是为了可复用代码,让代码更容易被他人理解,可以让代码具有更好的扩展性和可复用性,通用设计模式有23个,每一个设计模式都是一个典型问题的解决方案。注意事项:设计模式不能随意套用,不要以为任意系统中都要使用设计模式,系统的设计也不是含有设计模式越多越好。设计的本质是面向对象方法的实际应用,具体而言是封装继承多态的反复使用。

java设计模式、大话设计模式、研磨设计模式、设计模式之禅、设计模式可复用面向对象基础。
java与模式。

定位问题的三种方式:缩小范围法、排除法、排查法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值