Haberate优化
一、缓存技术:
内存空间的一小块,缩短数据来源的深度,增加系统的反应性,Haberate缓存技术,位于持久层和数据库之间,位于本机上,目的是不让数据在数据库底层去取
1.一级缓存:
Session提供,一个session对应一个事务,事务级缓存,它是默认开启的,不需要手动开启,缓存的都是对象,通过队形的ID来区分是否有重复的对象,get、load方法默认调用
2.二级缓存:
应用级缓存,sessionFactory提供,默认是关闭的,需要手动开启,由同一个sessionFactory创建的session对象,共享缓存空间,二级缓存的护具由一级缓存提交而来,在实际开发过程中,不使用sessionFactory作为缓存技术,因为缓存过多,会影响创建session的性能,一般用第三方ehcache来作为二级缓存技术
3.一级缓存和二级缓存都和应用程序在同一程序上,消耗本机内存,缓存的都是对象
4.Haberate缓存数据的条件:
A.不经常变动,且访问量较高
B.并发量较小
C.数据量不能太大
二、锁机制
1.悲观锁:
操作数据时一定有至少一个人与我同时操作同一数据,在数据库内加锁,SQL语句后加for update,事务提交,完成操作后才解锁,范围控制的越小越好
2.乐观锁:
操作数据时一定没有人与我同时操作同一数据,在应用程序内加锁,通过版本号实现逻辑加锁,可能会造成用户流失
三、Haberate注解
@Entity:实体化类
@Table(name=“表名”)将类和表进行配置映射
@Id属性需要单独配置
@GenericGenertor(name=“名字”,strategy=“increment”声明Haberaate的ID生成策略)
其他属性用@Colum(name=“列名”,lengh=20)
关联关系
一对一:@OneToOne
一对多:@OneToMany
多对多:@ManyToMany
@JoinColum:特指关联外键
@JoinTable(name=“表名”joinColumns=@JoinColumn(name=“外键本类”))
InverseJoinColumns=@JoinColum(name=“外键”)