SSH-Hibernate(3)

一.事务代码规范

        Session session=null;
        Transaction transaction=null;
        try {
            session=HibernateUtils.getSession();
            transaction=session.beginTransaction();
            User user = new User();
            user.setUserName("li");
            user.setPassword("123");
            session.save(user);
            transaction.commit();
        }
        catch (Exception e){
            transaction.rollback();
        }
        finally {
            session.close();
        }

二.session与本地线程的绑定

保证session为单线程对象,获取本地线程绑定的session不需要手动关闭。

在Hibernate配置文件中添加:

<property name="hibernate.current_session_context_class">thread</property>

通过如下获取session对象:

package com.lgh.utils;

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


/**
 * Created by LGH on 2018/3/9.
 */
public class HibernateUtils {
    private static final Configuration cfg;
    private static final SessionFactory sessionFactory;
    static {
        cfg=new Configuration().configure();
        sessionFactory=cfg.buildSessionFactory();
    }
    public static Session getCurrentSession(){
        return  sessionFactory.getCurrentSession();
    }
}

三.Hibernate的Api使用

Query对象

1.使用Query对象不需要使用sql语句,但是需要使用Hql语句;

2.使用Hql操作实体类,和实体类的属性。

示例:

        Session session=null;
        Transaction transaction=null;
        try {
            session=HibernateUtils.getCurrentSession();
            transaction=session.beginTransaction();
            Query query = session.createQuery("from User");
            List<User> userList = query.list();
            for (User u:userList) {
                System.out.println(u);
            }
            transaction.commit();
        }
        catch (Exception e){
            transaction.rollback();
        }

Criteria对象

使用该对象做查询操作,不需要写语句,直接用方法就可以实现。

        Session session=null;
        Transaction transaction=null;
        try {
            session=HibernateUtils.getCurrentSession();
            transaction=session.beginTransaction();
            Criteria criteria = session.createCriteria(User.class);
            List<User> userList = criteria.list();
            for (User u:userList) {
                System.out.println(u);
            }
            transaction.commit();
        }
        catch (Exception e){
            transaction.rollback();
        }

SQLQuery对象

用SQLQuery对象调用底层sql语句实现

        Session session=null;
        Transaction transaction=null;
        try {
            session=HibernateUtils.getCurrentSession();
            transaction=session.beginTransaction();
            SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM TB_USER");
            sqlQuery.addEntity(User.class);
            List<User> userList = sqlQuery.list();
            for (User u:userList) {
                System.out.println(u);
            }
            transaction.commit();
        }
        catch (Exception e){
            transaction.rollback();
        }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值