1.配置文件xml
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CXzUkaNRTSq5UerR0T4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jMxkTOxgTNwEDNyATM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
一个实体类对应一个表,实体类的属性对应表的字段。
2.核心配置文件
知道连哪个数据库
url:数据库名字。这里是省略了localhost:3306,因为是连接本地。
URL没有省略的写法
规定方言用于:有Oracle ,mysql ,有语句和生成不一样。
更新表结构PS:就是会可能增加数据库表没有过的字段 。
**
3.用到的工具类
**
update
“1l” PS:指的是id号和long类型
transaction 是业务处理。
注释部分的做法会导致表中的数据的其他没有设置的属性会变成null,所以不推荐用这种方法。
推荐用先查询再修改的做法。
第二种是级联删除,可以把一对多的对应的表也删除掉。
Save or Update
设定了id就是修改,如果id不存在就会报错。
没有设定id就是保存。
from Customer PS:是类名
increment
//两个测试类做实验
细节:数据库的表结构自增长会因为increment而取消掉
多线程报错,所以increment的只能对单线程使用,
因为increment里面自带的自增长出现冲突
identity 可以使用数据库的自动增长机制
必须手动配置id’
native
native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用sequence。
session的一级缓存
//快照区
一级缓存原理图
比较快照区和缓存区是否一致,不一致就修改数据库,一致就不修改。
事务
事务处理加在service层。保证同一个session才能保证事务是同一个。
绑定同一个线程用到的 getcurrentsession()方法,使用这个方法必须先配置文件。
不能关闭session,会报错
HibernateAPI
cust_name是属性名不是字段名这里表述的是类里面的东西
设置参数(0,)指的是第一个参数,从零开始。
设置分页查询
//firstresult 设置从第三个结果为结束,进行到下一页。
Criteria 条件查询QBC查询
通过add方法设置条件。