hibernate-核心开发接口-6

来源:互联网 发布:电脑打字用什么软件 编辑:程序博客网 时间:2024/06/06 15:53

configuration

  1. AnnotationConfiguration(读hibernate.cfg.xml中的数据配置)
  2. 进行配置信息管理
  3. 用来产生sessionFactory
  4. 可以在configure方法中指定hibernate配置文件
  5. 只需关注一个方法脚本buildSessionFactory

SessionFactory

用来产生和管理session(最主要的是维护数据库连接池)
通常情况下每个应用只需要有一个SessionFactory
除非有访问多个数据库的情况
关注两个方法:

  • sf.openSession()
    每次打开新的session,需要close()
Configuration cfg = new AnnotationConfiguration();sf = cfg.configure().buildSessionFactory();Session sessions = sf.openSession();sessions.beginTransaction();sessions.save(t);sessions.getTransaction().commit();sf.close();
  • getCurrentSession()
    从上下文找,如果有,取当前的,没有取新的
<!--hibernate.cfg.xml中,配置上下文,可选项jta、thread、manage、custom.class(后两种可以忘记),一般用thread(当前线程)--><property name="current_session_context_class">thread</property>
 用途:界定事务边界,事务提交自动close()
// 这种方式不需要 sf.close()Session session = sf.getCurrentSession()

JTA

java transaction api
分布式的事务管理(tomcat不具备这个能力,所以在hibernate.cfg.xml中不能配置jta,jboss、weblogic等具备这个能力)

对象的三种状态

  • 三种状态的区分关键在于
    1. 有没有id
    2. id在数据库中有没有
    3. 在内存中有没有(session缓存)
  • 三种状态
    1. transient:没id,内存中有,缓存中没有,数据库中没有
      对象被创建
    2. persistent:有id,内存中有,缓存中有,数据库中有
      执行save() saveOrUpdate()
    3. detached:有id,内存中有,缓存中没有,数据库中有
      sf.close()之后
原创粉丝点击