hibernate学习笔记5 ------ 缓存,注解

来源:互联网 发布:360排名优化 编辑:程序博客网 时间:2024/06/16 13:24

缓存介于应用程序和永久性数据存储源之间,

使用缓存,可以降低应用程序直接读写永久性数据存储源


一、一级缓存       session级                     load()

二、二级缓存       sessionFactory级

三、查询缓存


一级缓存:

1、当对象save()时 会自动放入缓存

2、get()  和  load()  有缓存

list()  遍历  无  二级缓存,有查询缓存

iterator()   有缓存


消除缓存

evit()

clear()


contains()      判断指定对象是否在缓存中

flush()    刷新


不是同一个会话,有缓存  ----》  二级缓存来解决

SessionFactory 内

 在hibernate 目录下,ehache中

1、缓存包放入项目中

2、将ehcache.xml放在src中

3、配置主配置文件

<property name="cache.use-second-level-cache">

true</>

设置缓存类型,设置缓存提供商

<property name= "cache.region.factory-class">

EhCacheRegionFactory </>

(hibernate 提供的)

4、<class-cache usage="read-only" class="使用的类" />

也可以在实体类中主键之前配置。


查询缓存:

Iterator<>  iter = session.createQuery(sql).setCacheable(true).list();


iterate()  在二级缓存比list()t好

list() 只能写不能读出二级缓存


注解:(要么都写在属性上,要么都写在get方法上)

替换复杂的hbm.xml文件间XXHibernate程序开发。


注解配置实体类:

@Entity  将一个类声明为一个实体bean(即一个持久化POJO类)

@Id    声明了该实体bean的标识属性(相当于数据表的主键)

@GeneratedValue  定义标识符的生成策略

@Table  为实体bean映射指定表(table)、目录(catalog)和schema的名称,默认值,实体bean的类名,不带包名

@UniqueConstraint  定义表的唯一约束

@Log  表示属性将持久化为Blob(字节byte[])或者Clob(字符char)类型(Blob:音乐,视频,图片;Clob:小说,文本)

@Column  将属性映射到列

@Transient  将忽略这些字段和属性,不用持久化到数据库

@NamedQuery   配置命名查询


@OneToOne   建立实体bean之间的一对一关联

@OneToMany   一对多

@ManyToOne   多对一

@ManyToMany  多对多


<mapping class="com.hy.Student"/>


@GeneratedValue()

(Strategy=auto)默认序列

@GeneratedValue(generator="   ")

@genericGenerator(name="    (此处为上一行空白处内容)  ",strategy="sequence"

parameters={@Parameter(name="sequence",value="自己的序列名")})

@NamedQuery(name="all",query="from Student")

@NamedQueries({@NamedQuery(    ),@NamedQuery(     )})


多对多映射关系

@OneToMany   写在get方法上面


@OneToMany(MappedBy="dept",cascade="CascadeType.ALL",fetch="FetchType.LAZY")       多的一方对一方的依赖属性 

@LazyCollection


@ManyToOne

@JoinColumn(name="(外键名称)")


@ManyToMany(@JoinTable(name="teachers_courses",joinColumns={@JoinColumn(name="  ")},inverseJoinColumn={@JoinColumn(name="    ")}))


@MantToMany(mappedBy="     ")      指定该名对方进行维护


@OneToOne(mappedBy="   ")


@OneToOne

@JoinColumn(name="    ")


注解的缓存:   二级缓存

@Cache(usage=CacheConcurrencyStrategy.Read_Write)



0 0
原创粉丝点击