Hibernate

Hibernate可以理解为一个中间件,他负责把Java程序的sql语句接收过来并发送到数据库,而数据库返回来的信息邮hibernat接收后直接升车鞥一个对象传给Java。

Hibernate有
1)一个配置文件cfg.xml,包括基本配置信息,比如数据库的操作username,password,
url,driver和format sql和方言;
2)还有一个映射文件hbm.xml对数据库中标的映射。

Hibernate一级缓存是必要的,位于session部分,二级缓存则不是必须的,是由sessionfactory控制的进程级缓存,由开发人员自行指定。二级缓存可指定使用何种开元的cache工具。Hibernate3以后的默认版本为Ehcache。查询时间缓存的过程
1)查询一级缓存中是否有需要的数据;
2)若没有,则查二级缓存;
3)若二级缓存中也没有,此时再执行查询数据库的操作。

Hibernate 一级缓存(session缓存) 是事务级别的,每个事务(session)都有单独的一级缓存。这一级缓存是由hibernate进行管理。一般情况下无需进行干预。每个事务都有单独的一级缓存,不会出现并发问题,因此无须提供并发访问策略。

速度:一级>二级>数据库

Hibernate也会自行维护缓存中的数据,以保证缓存中的数据和数据库中的真实数据的一致性。无论如何,当你调用方法or获取一个对象时,该对象都将被加入到session的内部缓存中,党flush()方法最后被调用时,对象的状态会和数据库同步。如,删除、更新、增加数据的时候,同时更新缓存。

Hiernatede 的主键
1)assign:由程序生成主键,且要在save()之前,否则抛出异常,特点是主键的生成值,完全由用户决定,与底层数据库无关。用户需要维护主键值,在调用session.save()之前指定主键值。
2)hilo:使用高低算法生成主键值,该方法需要额外的数据表和字段提供高位值来源,默认,使用表hibernate-unique-key。默认字段为next-hilo。特点:能保证同一个数据库主键的唯一性,但不能保证多个数据库中主键的唯一性。Hilo与底层数据库无关,有hibernate维护。
3)increament:由hibernate从数据库中取出主键的最大值,以该值为基础,每次增量为1,在内存中生成主键,不依赖与DB。
4)sequence:采用数据库提供的sequence机制生成主键,需要数据库支持sequence,比如Oracle、db2、Mysql不支持。
5)identity:由底层数据库生成标识符,identity由数据库自己生成的,但是这个主键必须设置为自增长。使用identity前提是数据库支持自动类型增长字段类型。比如,db2、mysql、sql server。Oracle不支持。
6)**native:**由hibernate根据使用的数据库,自行判断采用hilo,sequence,identity,其中一种作为主键生成方式。比如MySQL是identity,Oracle是sequence。

Hibernate查询数据的方式:sql;query、criteria,以对象的方式添加查询条件;sql,直接使用sql语句操作数据库。

JDBC链接数据库,链接操作时由Driver Manager管理,JDBC建立和关闭时及其耗资源的,connection接口实现链接数据库。JDBC链接数据库分为4部分:
1)加载驱动 Class.forName(“com.mysql.jdbc.Driver”)
2) 创建链接 Connection con = DriverManager.getConnection(url,username,password)
3) 创建statement statement s = con.createStatement()
4) 执行sql s.executeQuery()

prepareStatement 是预先编译的语句,statement不是
优点: 防止sql注入,性能提高
callableStatement: 存储过程调用DatabaseMetaDate 类的很多方法都可以知道数据库中存储过程的详情。

Hibernate持久化对象的生命周期:
1)临时状态(transient),也称为自由状态,他只存在于内存中,且在数据库中无响应的数据。
2)持久化状态(Persiet),与session关联,且在数据库中有对应数据。
3)游离状态(detached),已经持久化,但不在session缓存中。数据库中有记录。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于学习Hibernate,我可以为你提供一些指导。Hibernate是一个Java持久化框架,用于将Java对象映射到关系数据库中。它简化了与数据库的交互,提供了ORM(对象关系映射)的功能。 如果你想学习Hibernate,以下是一些建议的步骤: 1. 了解基本概念:开始之前,建议你先了解一些Hibernate的基本概念,例如持久化、实体类、会话(Session)等。这将帮助你更好地理解Hibernate的工作原理。 2. 学习Hibernate配置:Hibernate使用一个配置文件来连接数据库和定义映射关系。你可以学习如何配置Hibernate以适应你的项目需求。这包括数据库连接配置、实体类映射等。 3. 学习Hibernate实体映射:Hibernate通过注解或XML文件将Java实体类映射到关系数据库表中。你可以学习如何使用注解或XML文件来定义实体类的映射。 4. 学习Hibernate查询语言(HQL):HQL是一种类似于SQL的查询语言,用于对数据库进行查询操作。学习如何使用HQL进行查询和操作数据库是很重要的。 5. 学习Hibernate事务管理:事务管理是在处理数据库操作时非常重要的一部分。学习如何使用Hibernate进行事务管理,包括开启事务、提交事务、回滚事务等。 6. 实践项目:最好的学习方法是通过实际项目来应用所学的知识。尝试在一个小型项目中使用Hibernate来进行数据库操作,这将帮助你更好地理解和掌握Hibernate的使用。 除了上述步骤,还有很多其他方面的内容可以学习,例如缓存管理、性能优化等。希望这些步骤能够帮助你入门Hibernate!如果你有任何进一步的问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值