码迷,mamicode.com
首页 > Windows程序 > 详细

Hibernate入门(二)——hibernateAPI详解

时间:2018-10-11 22:04:18      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:span   结束   默认   增删改   16px   元数据   ping   static   hibernate   

Hibernate API 详解

1.Configuration

 功能:配置加载类,用于加载主配置,orm元数据加载

   .创建:

 Configuration conf = new  Configuration();

   读取指定配置文件(加载主配置文件,即我们经常创建的"hibernate.cfg.xml")  

    从下图中可以发现有很多关于读取方法的重载。。。

    虽然有这么多重载,但是一般咱就用无参构造方法把,默认找到src下的hibernate.cfg.xml文件

    

 conf.configure();

  当然可以在创建Configuration对象的时候直接执行:

  

Configuration conf = new  Configuration().configure();

 技术分享图片

    它们的源码如下:

 技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

2.SessionFactory

  功能:用于创建数据库核心对象session对象的工厂,简单的说,功能就只有一个-------------------创建session对象

    注意:

      1.sessionFactory负责保存和使用所有配置信息,消耗内存非常大

      2.sessionFactory属于线程安全的对象设计(不同的用户对应不同的session)

    结论:保证在web项目中,只创建一个sessionFactory

 读取完主配置文件(hibernate.cfg.xml)后自然要拿到SessionFactory    

SessionFactory sf = conf.buildSessionFactory();

 

3.session对象

  创建:

   ①:一个新的session对象

Session session = sf.openSession();

  ②:获得一个与线程绑定的session对象

Session cSession = sf.getCurrentSession();

      ①插入

        注意:

          增删改查操作之前要开启事务,结束后要提交事务

          最后要session释放资源(后面的操作我就不完整写了)

        拿到对象,直接用save方法就行了

        Transaction tx = session.beginTransaction();
        Customer customer = new Customer();
        customer.setCust_id(2);
     customer.setCust_name("测试"); session.save(customer); tx.commit();
    session.close();

      ②根据主键查询 

Customer customer = session.get(Customer.class, 2);

      ③修改

      拿到对象然后调用update方法()

Customer customer = session.get(Customer.class, 2);
customer.setCust_name("测试2");
session.update(customer);

      发现一个"插入或者修改" 技术分享图片

 

      ④删除

       首先拿到对象,然后调用delete()

Customer customer = session.get(Customer.class, 2);
session.delete(customer);

 

4.自定义Hibernate工具类

   对于SessionFactory,提到最好只创建一个,其次就是封装重复代码,提高代码的复用性 

package deep.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 * Hibernate工具类
 * @author DeepSleeping
 *
 */
public class HibernateUtils {

    private static SessionFactory sessionFactory;
    
    static{
        Configuration conf = new Configuration().configure();
        sessionFactory = conf.buildSessionFactory();
        
    }
    
    public static Session getSession(){
        return  sessionFactory.openSession();
    }
    
    public static Session getCurrentSession(){
        return sessionFactory.getCurrentSession();
    }
}

 

 

  

  

Hibernate入门(二)——hibernateAPI详解

标签:span   结束   默认   增删改   16px   元数据   ping   static   hibernate   

原文地址:https://www.cnblogs.com/deepSleeping/p/9774757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!