hibernate 学习笔记(1)

HIbernate提供了数据持久化层解决方案:

(即数据库访问框架)——我是这样理解的

1、开发源代码的对象关系映射框架

2、对JDBC进行了非常轻量级的对象封装(其实我感觉并不算完全轻量级,封装了部分底层方法,带来了一定的简化,也使其在这些方面变得不容易自定义?Mybatis感觉相对更加轻量化一点。。)

3、将JavaBean对象和数据库的表建立对应的关系

将数据连接信息都存放在配置文件中


持久化:

将程序中数据的瞬时状态与持戒状态转换的机制


瞬时状态(Transient Objects) ——》临时状态

使用new操作符初始化的对象不是立刻就持久的。它们的状态是瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所引用),它们的状态将会丢失,并由垃圾回收机制回收。

持久化对象(Persist Objects) ——》持久化状态

持久实例是任何具有数据库标识的实例。它有持久化管理器Session统一管理,持久实例是在事务中进行操作的——它们的状态在事务结束时同数据库进行同步。当事务提交时,通过执行SQL的INSERT、UPDATE和DELETE语句把内存中的状态同步到数据库中。

离线对象(Detached Objects) ——》游离状态

Session关闭之后,持久化对象就变为离线对象。离线表示这个对象不能再与数据库保持同步,它们不再受Hibernate管理。(持久化对象脱离了Session的对象。如Session缓存被清空的对象。特点:已经持久化,但不在Session缓存中。处于此状态的对象叫游离对象。)


1、将对象保存到关系型数据库中。

2、从关系数据库读取数据存入对象。

ORM(Object Relational Mapping)对象关系映射

1、编写时以面向对象方式处理数据

2、保存时以关系型数据库方式存储


ORM解决方案:

1、在持久化对象上执行基本增删改查操作的API

2、用于对持久化对象或属性查询的一种语言或者API

3、用于实体关系映射的工具

4、能够与事务对象交互,执行检查,延迟加载以及其他优化功能


HIbernate提供了C3P0的连接池功能!!!


可以通过导入单元测试包,然后通过@Test标注方法进行测试。


Hibernate操作数据库:

1、读取并解析配置文件“hibernate.cfg.xml”

Configuration cfg = new Configuration().configure();

2、读取并解析映射信息,创建SessionFactory

SessionFactory factory = cfg.buildSessionFactory();

3、打开Session

Session session= factory.openSession();

4、开始一个事务(增删改操作必须通过事务提交,而查询操作可选)

Transaction tx = session.beginTransaction();

5、数据库操作

session.save(new Mydept(....));

6、提交事务

tx.commit();

7、事务关闭以及会话关闭

tx.close();

session.close();


于hibernate.cfg.xml中设置: (当设置hb2ddl.auto时表不存在会进行自动生成)

<!-- 手动配置显示SQL语句 -->

<property name="show_hql">true</property>

<property name="format_sql">true</property>

<property name="hb2ddl.auto">update</property>


可以通过在hibernate.cfg.xml文件中配置

<property name="current-session-context-class">thread</property>

可自动关闭session,无需手动关闭?


增删改的方法分别为:

save()

update()

delete()

查询:

get()   当查找数据不存在时显示null 立即加载

load() 当查找数据不存在时抛出异常(ObjectNotFoundException) 延迟加载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值