Hibernate核心开发接口

Hibernate核心开发接口

 

1、Configurate

a)AnnotationConfiguration

b)进行配置信息管理

c)用来产生SessionFactory

d)可以在configure中指定hibernate配置文件

sessionFactory = newAnnotationConfiguration().configure(“hibernate.xml”).buildSessionFactory();

f) 只需关注一个方法即:buildSessionFactory()

 

2、SessionFactory

a)用来产生和管理Session

b)通常情况下每个应用只需要一个SessionFactory

c)关注两个方法即:openSessiongetCurrentSession

*openSession 每次都是新的,需要close

*getCurrentSession从上下文找,如果有,用旧的,如果没有,建新的

1)用途:界定事务边界

2)事务提交自动close(不用session.close())

3)须在hibernate.cfg.xml文件中加入<propertyname="current_session_context_class">thread</property>

(取值有jtathreadmanagedcustom.class)

a)Thread使用connection

b) JTA TransactionManager管理分布式事务,即管理多个数据库。往往是由applicationServer提供,Tomcat不提供。

 

3、hibernate的三种状态

a)transient:内存中一个对象,没ID,缓存中也没有

b)persistent:内存中有,缓存中有,数据库有(ID

c)detached:内存有,缓存没有,数据库有(ID)

 

4、Session

a)管理一个数据库的任务单元

b)方法(CRUD):save、delete、saveorUpdate、load、get

c)getload的区别

             1)不存在对应记录时表现不一样

            2)load返回的是代理对象,等到真正用到对象的内容时才发出sql语句

                    3)get直接从数据库加载,不会延迟

d)clear方法

1)无论是load还是get,都会首先查找缓存(一级缓存),如果没有,才会去数据库加载,调用clear()方法可以强制清除session缓存

2)调用flush()方法可以强制进行从内存到数据库的同步

c) update方法

1)用来更新detached对象,更新完成后转为persistent状态

2)更新transiant对象会报错

3)更新自己设定ID的transient对象可以(数据库有对应记录)

4)P状态的对象只要庙宇不同字段就会发生更新

5)更新部分更改的字段

*XML设定 property标签的update属性,annotation设定column的updatable属性,不过这种方式很少用,因为不灵活

*使用XML中的dynamic-update,JPA Annotation没有对应的属性

*使用HQL(常用)

 

5、SchemaExport接口

可以在程序中控制生成建表语句

你可能感兴趣的:(Hibernate核心开发接口)