hibernate4--02详解

1. Configuration管理读取配置文件

//读取src下hibernate.properties,不推荐使用
Configuration cfg = new Configuration();
//如果hibernate的核心配置文件 不叫 hibernate.cfg.xml 
Configuration cfg1 = new Configuration().configure("hb.cfg.xml");
//可编程式  可以不使用配置文件
//cfg.addProperties();
//cfg.addResource()

Configuration在一个应用中,最好写一个。通过configuration来创建SessionFactory对象。

2. SessionFactory对象:是一个session工厂。是一个重量级对象。在一个应用中最好也是单列的。是一个线程安全的。属于进程级别的对象。

//2.通过Configuration创建SessionFactory对象
//在hibernate3.x中是这种写法
//SessionFactory sf = cfg.buildSessionFactory();
//hibernate4.3之前~hibernate4.0
//      ServiceRegistry sr = new ServiceRegistryBuilder()
//                          .applySettings(cfg.getProperties())
//                          .buildServiceRegistry();
        //hibernate4.3
        ServiceRegistry registry = new StandardServiceRegistryBuilder()
                            .applySettings(cfg.getProperties())
                            .build();
        SessionFactory sf = cfg.buildSessionFactory(registry);

                //或者
                //SessionFactory  sf = cfg.buildSessionFactory();

3. Session对象:使用hibernate进行数据库操作,主要使用session。Session可以理解为对Connection对象的一个包装。Session对象中提供了对数据库的crud操作。

Session是一个线程不安全的对象。生命周期非常短暂,一般和事务一一对应。Session又称为hibernate中的一级缓存。Session又是transaction对象的工厂。

//3.通过SessionFactory得到Session
Session session = sf.openSession();

4. Transaction对象:事务管理对象。通过session来获取到该对象。包括了事务的开启,事务的提交,事务的回滚。

//第一种写法
Transaction tx = session.beginTransaction();
//第二种写法
Transaction tran = session.getTransaction();
tran.begin();

事务和异常处理:

public static void main(String[] args) {
        Configuration cfg = null;
        SessionFactory sf = null;
        Session session = null;
        Transaction tx = null;
        try{
            cfg = new Configuration().configure();
            ServiceRegistry registry = new StandardServiceRegistryBuilder()
                                .applySettings(cfg.getProperties())
                                .build();
            sf = cfg.buildSessionFactory(registry);
            session = sf.openSession();
            tx = session.beginTransaction();
            User u  = (User)session.get(User.class, 2);
            System.out.println("name="+u.getName());
            //6.提交事务
            tx.commit();
        }catch (Exception e) {
            e.printStackTrace();
            //回滚事务
            tx.rollback();
        }finally{
            //7.关闭session
            if(session!=null&&session.isOpen())
            session.close();
        }
    }

5. hibernate.cfg.xml讲解


    
    
    
        com.mysql.jdbc.Driver
    
    
    
        jdbc:mysql:///hibernate4
    
    root
    root
    
    
    
        org.hibernate.dialect.MySQL5Dialect
    
    
    true
    
    true
    
    update
    
    

6. *.hbm.xml讲解



    
    
        
        
            
            
        
        
        
            
         
          
    

你可能感兴趣的:(hibernate4--02详解)