Hibernate的基础配置

一、Hibernate的简介

Hibernate是开源的一个ORM(对象关系映射)框架。ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。
  Hibernate的核心:


Hibernate的基础配置_第1张图片

【接口说明】
1.Configuration接口:负责配置并启动Hibernate。
2.SessionFactory接口:负责初始化Hibernate。
3.Session接口:负责持久化对象的CRUD操作。
4.Transaction接口:负责事务。
5.Query接口和Criteria接口:负责执行各种数据的查询。

注意:Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。

二、Hibernate的配置

提供User.hbm.xml文件,完成实体类的映射

  
  
      
  
      
          
              
          
          
          
          
          
      
  

配置hibernate.cfg.xml文件

  
      
          
        com.mysql.jdbc.Driver  
          
        jdbc:mysql://localhost:3306/hibernate_first  
          
        root  
          
        root  
          
        org.hibernate.dialect.MySQLDialect  
          
    
      
  

三、Hibernate的基本应用

事务的开启

public class Client {  
    public static void main(String[] args) {  
        //读取配置文件  
        Configuration cfg = new Configuration().configure();  
        SessionFactory factory = cfg.buildSessionFactory();  
        //根据SessionFactory创建Session
        Session session = null;  
        try{  
            session = factory.openSession();  
            //开启事务  
            session.beginTransaction(); 
            //进行事务(add、delete、update、get、load)......
            //提交事务  
            session.getTransaction().commit();      
        }catch(Exception e){  
            e.printStackTrace();  
            //如果有异常则需要回滚事务  
            session.getTransaction().rollback();  
        }finally{  
            if(session != null){  
                if(session.isOpen()){  
                    //关闭session  
                    session.close();  
                }  
            }  
        }  
    }  
}  

添加对象

User user = new User();  
user.setUsername("ada");  
user.setPassword("123");  
user.setCreateDate(new Date());  
session.save(user);  

查询对象
  查询有两种方法:get()和load(),下面来介绍一下这两种方法的区别。两种方法的区别请看延迟加载。

//利用load()方法加载对象
User u = (User)session.load(User.class,id);
//利用get()方法加载对象
User user = (User)session.get(User.class, id);

删除对象
  删除的对象一定要是持久态的,若是瞬时态的则会报错。通常进行删除操作之前,我们都会先把对象加载出来,然后再进行删除操作,这样相当于删除之前先查询数据库。

User u = (User)session.load(User.class,id);
if(u!=null)
   session.delete(u);

小提示:delete方法本质上是取出对象的id,其他属性对他没意义,所以用load方法取出的代理对象,就可以delete了。这个时候不用担心延迟加载导致session关闭报错之类的问题。

修改对象

User u = (User)session.load(User.class,id);
if(u!=null){
    u.setAge(18);
    session.update(u);
}

你可能感兴趣的:(Hibernate的基础配置)