湖中仙人 2023-05-31 11:19 采纳率: 14.3%
浏览 29

sessionFactory如何调用数据库

公司之前的旧项目,没看懂,这个里面的sessionFactory在哪里连接数据库和服务的,谁能指点下吗


package com.janus.dao.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils;

import com.janus.dao.IUserDao;
import com.janus.model.User;

@Repository
public class UserDaoImpl implements IUserDao{
    
    @Autowired
    private SessionFactory sessionFactory;
    
    private Session getCurrentSession(){
        return this.sessionFactory.openSession();
    }
    
    public User findUserByUsername(String username){
        User user = new User();
        Session session = getCurrentSession();
        try{
            Query query = session.createQuery("from User where loginName  = :username").setParameter("username", username);
            List<User> list = query.list();
            if(list.size() > 0){
                user = list.get(0);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            if(session.isOpen()){
                session.close();
            }
        }
        return user;
    }

    public User load(Long id) {
        // TODO Auto-generated method stub
        return null;
    }

    public User get(Long id) {
        // TODO Auto-generated method stub
        return null;
    }

    public List<User> findAll() {
        // TODO Auto-generated method stub
        return null;
    }

    public void persist(User entity) {
        // TODO Auto-generated method stub
        
    }

    public Long save(User entity) {
        // TODO Auto-generated method stub
        return null;
    }

    //更新保存用户
    public void saveOrUpdate(User user) {
        Session session = getCurrentSession();
        try {
            //开启事务
            session.beginTransaction();
            //session执行
            session.saveOrUpdate(user);
            //事务提交
            session.getTransaction().commit();
        } finally {
            if(session.isOpen()){
                session.close();
            }
        }
    }

    public void delete(Long id) {
        // TODO Auto-generated method stub
        
    }

    public void flush() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public List<User> findUserPageByCondition(int pageSize, int pageNumber, String loginName, String name) {
        List<User> list = new ArrayList<User>();
        Session session = getCurrentSession();
        try{
            StringBuffer sb = new StringBuffer("from User where 1 = 1");
            if(!StringUtils.isEmpty(loginName)){
                sb.append(" and loginName = '" + loginName + "'");
            }
            if(!StringUtils.isEmpty(name)){
                sb.append(" and name like '%" + name + "%'");
            }
            //System.out.println("sql condition:" + sb.toString());
            
            //开启事务
            session.beginTransaction();
            Query query = session.createQuery(sb.toString());
            if(pageNumber < 0){
                pageNumber = 0;
            }
            if(pageSize <= 0){
                pageSize = 10;
            }
            query.setFirstResult(pageNumber);//从第几条记录开始
            query.setMaxResults(pageSize);//取出多少条数据
            
            list = query.list();
            //事务提交
            session.getTransaction().commit();
            
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            if(session.isOpen()){
                session.close();
            }
        }
        return list;
    }

    @Override
    public Long countUser(int status) {
        Long totalAll = 0L;
        Session session = getCurrentSession();
        try{
            String hql = "SELECT COUNT(*) FROM User";
            session.beginTransaction();
            Query query = session.createQuery(hql);
            totalAll = (Long) query.uniqueResult();
            session.getTransaction().commit();
            
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            if(session.isOpen()){
                session.close();
            }
        }
        return totalAll;
    }

    @Override
    public int deleteUsersBatchByIds(int[] ids) {
        int rst = 0;
        Session session = getCurrentSession();
        try{
            StringBuffer sb = new StringBuffer("UPDATE User SET status = '0' Where id IN (");
            String str = "";
            for(int i = 0; i < ids.length; i++){
                str += ids[i] + ",";
            }
            sb.append(str.substring(0, str.length()-1) + ")");
            
            session.beginTransaction();
            Query query = session.createQuery(sb.toString());
            rst = query.executeUpdate();
            session.getTransaction().commit();
            
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            if(session.isOpen()){
                session.close();
            }
        }
        return rst;
    }

}

  • 写回答

3条回答 默认 最新

  • 瞬间的未来式 2023-05-31 11:22
    关注

    这是hibernate框架,连接数据的信息应该在xml里面,你找找应该有个hibernate.xml 类似名字的配置文件

    评论

报告相同问题?

问题事件

  • 创建了问题 5月31日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上