Hibernate学习(二)

主键的分类
1.自然主键
表里面 有一个字段 符合主键的规则
就直接使用这个字段 作为主键
2.代理主键
表里面 没有一个字段 符合主键的规则
自己创建的 id 作为表的主键 这个键叫代理主键  

主键生成策略(7种)
increment和identity
主键 自增
increment由hibernate管理
插入数据时 会先去数据中查询当前的最大id
然后把查出来的id+1 再插入数据
identity使用数据库中的主键自增
插入时 打印sql中 不会插入id

uuid
全球不重复的唯一标识
注意:id必须使用字符串类型

native(最常用)
identity+序列+hilo
根据你使用的数据库类型来选择使用下面的3个策略之一
所有数据库不是支持identity就是序列

hilo(高低位算法)
将主键交给hibernate处理
使用自己的算法 帮你维护主键

assigned
由你自己维护主键 插入数据需要有主键使用的主键

序列 sequence oracle默认的

自动生成表结构
去etc/hibernate.properties下找
update (常用)
自动生成表结构 如果映射文件和表不对应 将会修改表字段
但是原来表的字段不会改变 会新增字段
create
没次运行都会创建一个新的表出来(数据丢失)
create-drop
没次运行都会创建一个新的表出来
每次运行结束都会把表删了
validate
每次都会验证你的表结构 如果实体类与映射文件不同将会抛出一个异常

hibernate操作对象的3种状态
 1.瞬时态 没有id 没有跟session产生关系
 2.持久态 有id   有跟session产生关系
 3.游离态    有id 没跟session产生关系

设置隔离级别
默认隔离级别1 2 4 8
1.脏读
2.不可重复读
3.幻读
 READ UNCOMMITED 隔离级别  1,2,3     1
 READ COMMITED读未提交       2,3     2
  REPEATABLE READ 读已提交      3     4
 SERIALIZABLE 串行化        都能避免  8
 隔离级别使用1个字节存储
  0001
  0010
  0100
  1000

如何封装一个方法获取session
public class HibernateUtil {
	private static SessionFactory sessionFactory;
	//获取session对象
	static {
		//读文件
		Configuration configuration = new Configuration().configure();
		//创建session工厂
		sessionFactory = configuration.buildSessionFactory();
	}
	//获取session
	//创建一个全新的session
	public static Session getOpensession() {
		return sessionFactory.openSession();
	}
	//获取当前使用的session
	//注意 使用该方法 必须在主配置文件中设置
	public static Session getCurrentSession() {
		return sessionFactory.getCurrentSession();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值