hibernate核心api

来源:互联网 发布:幼儿教育发展前景知乎 编辑:程序博客网 时间:2024/06/11 19:49

    publicvoid addUser() {

//     第一步加载hibernate核心配置文件

       /*

        * 到项目里面src下面找到名称是hibernate.cfg.xml配置文件

        * 把配置文件加载到cfg对象里面

        **/

       Configuration cfg = new Configuration();

       cfg.configure();

      

//     第二步创建SessionFactory对象

       /*

        * 做很多事情:

        * 创建sessionFactory过程中

        * 1)找到核心文件中数据库部分,连接数据库

        * 2)找是否需要hibernate帮创建表,

        *** 找到需要帮创建表,找到映射,根据映射关系在连接数据库把表创建

        *** 如果不需要创建表,直接返回sessionFactory对象

        **/

       SessionFactory sessionFactory = cfg.buildSessionFactory();

      

//     第三步使用SessionFactory对象创建Session对象

       /*

        * 类似于jdbc里面connection

        **/

       Session session = sessionFactory.openSession();

      

//     第四步开启事务

       /*

        * hibernate建议手动控制事务

        **/

       Transaction tx = session.beginTransaction();

      

//     第五步调用session方法实现添加操作

       /*

        * 不需要写sql语句

        * 不是直接操作数据库表,操作表对应实体类对象就可以了

        **/

       User user = new User();

       user.setUsername("东方不败");

       user.setPassword("1314520");

       user.setAddress("日本");

      

       //调用session方法实现

       session.save(user);

      

//     第六步提交事务

       tx.commit();

      

//     第七步关闭连接

       session.close();

       sessionFactory.close();

    }


2 因为创建SessionFactory过程中做很多事情,这个过程特别耗资源

 

3 解决sessionFactory耗资源问题:

1)方案:让sessionFactory对象在一个项目里面只需要创建一次

* 类似于 ServletContext对象

 

2)实现:

* 静态代码块,类加载时候执行,执行一次

4工具类编写

publicclass HibernateUtils {

    static Configurationcfg =null;

    static SessionFactorysessionFactory =null;

    //静态代码块实现

    static {

       cfg =new Configuration();

       cfg.configure();

       sessionFactory =cfg.buildSessionFactory();

    }

    //提供返回sessionFactory对象的方法

    publicstatic SessionFactory getSessionFactory() {

       returnsessionFactory;

    }

}

获取绑定session

sessionFactory.getCurrentSession();