设计制作售卖,seo在线教程,江西九江网站建设,网站架构策划一 持久化类 1.持久化#xff1a;内存对象---数据库#xff08;硬盘#xff09;Hibernate持久化的框架
持久化类#xff1a;Java对象与数据库中的表建立映射关系 Hibernate就称为持久化类#xff08;Java类映射文件#xff09;
2.编写规则#xff1a; … 一 持久化类 1.持久化内存对象---数据库硬盘Hibernate持久化的框架
持久化类Java对象与数据库中的表建立映射关系 Hibernate就称为持久化类Java类映射文件
2.编写规则 二 主键生成策略
1.主键分类 代理主键更合理
2.生成策略 测试 //测试主键生成策略public class Demo { Test //保存客户 public void fun1(){ //1 获得sessionSession session HibernateUtils.openSession(); //2 控制事务Transaction tx session.beginTransaction(); //3执行操作Customer c new Customer();c.setCust_name(王东); session.save(c); //4提交事务.关闭资源tx.commit();session.close(); }} increment 单线程数据库中的表不能是自增用的是Hibernate的自增
public class Demo { Test //保存客户 public void fun1(){ //1 获得sessionSession session HibernateUtils.openSession(); //2 控制事务Transaction tx session.beginTransaction(); //3执行操作Customer c new Customer();c.setCust_name(联想); session.save(c); //4提交事务.关闭资源tx.commit();session.close(); } Test //保存客户 public void fun2(){ //1 获得sessionSession session HibernateUtils.openSession(); //2 控制事务Transaction tx session.beginTransaction(); //3执行操作Customer c new Customer();c.setCust_name(苹果); session.save(c); //4提交事务.关闭资源tx.commit();session.close(); }} 两个线程都会执行此语句查到相同的最大id 在存储的时候就会报错 三 持久化类的三种状态 1.三种状态
瞬时态transient 无oid 无session管理的对象
有oid 有session管理的对象 有oid无session管理的对象
session管理调session的方法把对象交给session管理
oid:唯一的标识在DB中有主键id
//测试对象的三种状态public class Demo { Test //查看三种状态 public void fun1(){ //1 获得sessionSession session HibernateUtils.openSession(); //2 控制事务Transaction tx session.beginTransaction(); //3执行操作Customer c new Customer(); // 没有id, 没有与session关联 瞬时状态 c.setCust_name(联想); // 瞬时状态 session.save(c); // 持久化状态, 有id,有关联返回id下面直到session关闭之前的状态都是持久态 //4提交事务.关闭资源tx.commit();session.close();// 游离|托管 状态, 有id , 没有关联 } } 2.三种状态的转换 持久态对象可以自动更新数据库
不需要调用session.update(obj)就可以自动更新数据库
原理依赖了Hibernate的一级缓存 Test //三种状态特点 // 持久化状态特点: 持久化状态对象的任何变化都会自动同步到数据库中. public void fun3(){ //1 获得sessionSession session HibernateUtils.openSession(); //2 控制事务Transaction tx session.beginTransaction(); //3执行操作 Customer c session.get(Customer.class, 1l);//持久化状态对象 c.setCust_name(微软公司); //4提交事务.关闭资源tx.commit();session.close();// 游离|托管 状态, 有id , 没有关联 }