ITPub博客

首页 > IT职业 > IT图书 > Hibernate泛型DAO编写

Hibernate泛型DAO编写

IT图书 作者:maggiefengyu 时间:2021-09-09 09:02:47 0 删除 编辑
package com.saicmaxus.user.repository.dao;

import java.lang.reflect.ParameterizedType;
import java.util.Collection;
import java.util.List;

import javax.naming.InitialContext;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateDao {

    private final SessionFactory sf = getSessionFactory();
    private Class clazz;

    public void ddl() {
        Configuration cfg = new Configuration();
        cfg.configure();
        // SchemaExport export=new SchemaExport(cfg);
        // export.create(true, true);

    }

    public HibernateDao() {

    }

public void closeSessionFactory(){
    sf.close();
}
    protected SessionFactory getSessionFactory() {
        Configuration conf = new Configuration().configure();
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
                .applySettings(conf.getProperties()).build();
        SessionFactory factory = conf.buildSessionFactory(serviceRegistry);
        return factory;
    }

    public void saveEntity(T t) {
        Session session = sf.getCurrentSession();
        Transaction transaction = session.beginTransaction();
        session.save(t);
        transaction.commit();
        session.close();
    }

    public void updateEntity(T t) {
        Session session = sf.getCurrentSession();
        Transaction transaction = session.beginTransaction();
        session.update(t);
        transaction.commit();
        session.close();
    }

    public void saveOrUpdateEntity(T t) {
        Session session = sf.getCurrentSession();
        Transaction transaction = session.beginTransaction();
        session.saveOrUpdate(t);
        transaction.commit();
        session.close();
    }

    public void deleteEntity(T t) {
        Session session = sf.getCurrentSession();
        Transaction transaction = session.beginTransaction();
        session.delete(t);
        transaction.commit();
        session.close();
    }

    // 批量更新
    public void batchEntityByHQL(String hql, Object... objects) {
        Query q = sf.getCurrentSession().createQuery(hql);
        for (int i = 0; i  clazz) {
        Session session = sf.getCurrentSession();
        Transaction transaction = session.beginTransaction();
        T t = (T) session.get(clazz, id);
        transaction.commit();
        return t;
    }

    public T loadEntity(Number id, Class clazz) {
        Session session = sf.getCurrentSession();
        Transaction transaction = session.beginTransaction();
        T t = (T) session.load(clazz, id);
        transaction.commit();
        return t;

    }

    public List findEntityByHQL(String hql, Object... objects) {
        Session session = sf.getCurrentSession();
         Transaction transaction = session.beginTransaction();
        Query q = session.createQuery(hql);
        for (int i = 0; i  list = q.list();
        transaction.commit();
        return list;
    }
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/925/viewspace-2798879/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    68
  • 访问量
    581