springboot hibernate无法保存成功 对事务这块我不太了解,一直用的是

发布于 2022-01-01 15:03:07 字数 2998 浏览 763 评论 9

 

这个框架是网上若依的,很好,但是用Mybaits的,我想改造成hibernate,因为这边是做后台管理的,要开发简单,速度快.
jpa:
 database: MYSQL
 hibernate:
   dialect: org.hibernate.dialect.MySQLDialect
   new_generator_mappings: false
   format_sql: true
   ddl_auto: update
   current_session_context_class : thread
 show_sql: true

 

 

其他地方,已经好了,就是保存事务不行,但是这个配置没有经验,帮忙看看

 

package com.ruoyi.project.common.base.service;
import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.persistence.EntityManagerFactory;
import javax.transaction.Transactional;

import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;

import com.ruoyi.common.utils.SystemExtUtils;
import com.ruoyi.common.utils.json.Json;
@Repository("baseDao")
public class BaseDaoImpl implements IBaseDao {
    @Autowired
    private EntityManagerFactory entityManagerFactory;
    public Session getSession() {
        return entityManagerFactory.unwrap(SessionFactory.class).openSession();
    }
    @Override
    public <T> void saveOrUpdateNow(T clazz){
        Session session=this.getSession();
        session.merge(clazz); 
         //立即写入数据库并释放内存 
        session.flush(); 
        session.clear(); 
    }
    @Override
    @Transactional
    public <T> void saveOrUpdate(T clazz){
        Session session=this.getSession();
        //方法三
        session.saveOrUpdate(clazz);
        session.persist(clazz);
        session.clear();
        session.close();
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

终止放荡 2022-01-07 22:00:00

是的,是这个意思. 单表还行,多表就麻烦了. 其实我们这边用Hibernate,主要是因为他修改插入方便 真正查询我们还是用原生的SQL,我们只写一个BaseDao的类, 缩小了,前后台的层次,直接使用,快速方便,兄弟有这块的资料吗?指点一下,

梅窗月明清似水 2022-01-07 21:31:59

回复
我觉得或者搞两套dao是个好办法 save update 单表查询 操作用jpa 或者hibernate 联合查询 用mybatis ,hibernate 用来做复杂的多表关联查询的话用hql也不是很好 ,但是hibernate做原生sql查询虽然也可以 ,但是没有mybatis清晰。

已下线请稍等 2022-01-07 20:36:38

回复
一般多表关联查询都是用于报表,你可以报表查询使用mybatis,而业务逻辑开发用hibernate,这样不损失开发速度,也利于后期报表性能优化。

已下线请稍等 2022-01-07 17:51:08

引用来自“pullFoot_yonth”的评论

都用springboot 了, 直接用jpa不就行了, 还在使用entityManager这种低层次的api?

女中豪杰 2022-01-07 14:37:01

还以为是一样的 那我往这个方向找资料

醉生梦死 2022-01-07 14:26:21

回复
springboot 默认的jpa实现就是hibernate

无边思念无边月 2022-01-07 02:07:49

都用springboot 了, 直接用jpa不就行了, 还在使用entityManager这种低层次的api?

笑红尘 2022-01-06 11:09:21

楼下的兄弟jpa?

本宫微胖 2022-01-03 20:16:20

直接看官网吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文