hibernate api理解学习

来源:互联网 发布:凡科域名 编辑:程序博客网 时间:2024/06/06 09:16

由上一篇的hibernate入门案例,可以看出,实际上只用到几个对象。

1、configuration   配置管理类的对象

Configuration config = newConfiguration()

        config.configure();  加载主配置文件的方法-----hibernate.cfg.xml   或者

        config.congigure("cn/config/hibernate.cfg.xml");   加载指定路径下面的主配置文件,注意路径

2、sessionFactory    session的工厂对象(或者说代表了hibernate.cfg.xml配置文件)

SessionFactory sf =config.buildSessionFactory();

        Session session = sf.openSession(); 创建一个session对象  或者

        Session session = sf.getCurrentSession();  创建session或者取出session对象

3、session对象

       其实session实际上内部维护者一个连接池Connection , 代表了与数据库的对话。

        在hibernate中,只要使用与数据库相关操作,必须要用到session对象。

session的相关方法:

更新:

           session.save(obj);                                 保存一个对象

           session.update(emp);                            更新一个对象

           session.saveOrUpdate(emp);                保存或者更新的方法:(3种情况)

                                                                          没有设置主键,执行保存;

                                                                          有设置主键,执行更新操作;

                                                                           如果设置主键不存在报错!

主键查询:

           session.get(Employee.class, 1);              主键查询

           session.load(Employee.class, 1);             主键查询 (支持懒加载)


4、transaction  事务

Transaction tx = session.beginTransaction();  开启一个事务

    hibernate要求所有的与数据库相关的操作必须有事务的环境,否则会报错。

常见问题:

如果程序执行程序,hibernate也有生成sql语句,但数据没有结果影响。

           问题一般是事务忘记提交……. .commit();


完整的用法为:

publicvoid testHello() throws Exception {        // 对象        Employee emp = new Employee();        emp.setEmpName("班长");        emp.setWorkDate(new Date());               // 获取加载配置文件的管理类对象        Configuration config = new Configuration();        config.configure();  // 默认加载src/hibenrate.cfg.xml文件        // 创建session的工厂对象        SessionFactory sf = config.buildSessionFactory();        // 创建session (代表一个会话,与数据库连接的会话)        Session session = sf.openSession();        // 开启事务        Transaction tx = session.beginTransaction();        //保存-数据库        session.save(emp);        // 提交事务        tx.commit();        // 关闭        session.close();        sf.close();    }


     



 

原创粉丝点击