Struts2+Hibernate4整合(二)

一、核心接口:

  1. Session接口
    此Session不是JSP中的HttpSession,而是Hibernate中数据连接和事务管理之间的一个中间接口,是持久化操作的基础,提供了save(),update()、delete()等方法

  2. SessionFactory接口
    负责初始化Hibernate,创建Session实例,它保存了当前数据库配置的所有映射关系

  3. Transaction
    负责事务的相关操作

二、Hibernate运行过程

  1. 通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件
  2. 由hibernate.cfg.xml中的

三、调用Hibernate API对数据库进行操作

1、首先需要创建Hibernate的Session工厂,这是一个单例类,在后续的操作中需要用到这个Session工厂类

public class HibernateSessionFactory {
    private static SessionFactory sessionFactory;//会话工厂属性

    private HibernateSessionFactory(){

    }

    //获得会话工厂对象
    public static SessionFactory getSessionFactory(){
        if(sessionFactory==null){
            //创建配置对象
            Configuration config = new Configuration().configure();
            //创建服务注册对象
            ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
            .applySettings(config.getProperties()).buildServiceRegistry();
            sessionFactory = config.buildSessionFactory(serviceRegistry);
            return sessionFactory;
        }else{
            return sessionFactory;
        }
    }
}

2、使用Session进行对数据库增删改查的操作,这里的hql语句与sql语句不同,from Student,这里的Student一定是类名,而非表名

基本结构

public 返回值 方法名() {
        返回对象声明
        Transaction tx = null;
        String hql = null;
        try {
            Session session = HibernateSessionFactory.getSessionFactory()
                    .getCurrentSession();
            tx = session.beginTransaction();
            hql = "hql语句";
            Query query = session.createQuery(hql);
            Session操作语句
            tx.commit();
        } catch (Exception ex) {
            ex.printStackTrace();
            tx.commit();
        } finally {
            if (tx != null)
                tx = null;
        }
        return list;
    }

删除操作
不需要用到hql语句,一般需要id即可,将基本结构中的Session操作语句改为下面的即可

Student s = (Student) session.get(Student.class, sid);
            session.delete(s);

获取列表操作

hql = "from Student";
            Query query = session.createQuery(hql);
            list = query.list();

添加操作
其中一般要为其在数据库表中设置一个新的id,需要自己写一个私有方法getNewSid()来获得

student.setSid(getNewSid());
session.save(student);

更新操作

session.update(student);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值