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

捷乘 发布于 10/03 15:44
阅读 167
收藏 0

 

这个框架是网上若依的,很好,但是用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();
    }

加载中
0
f
freezingsky

直接看官网吧

捷乘
楼下的兄弟jpa?
0
p
pullFoot_yonth

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

p
pullFoot_yonth
回复 @捷乘 : springboot 默认的jpa实现就是hibernate
捷乘
还以为是一样的 那我往这个方向找资料
0
水表

引用来自“pullFoot_yonth”的评论

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

jpa是不是不够自由 只做save update 估计还行 复杂的查询还得写hql吧

水表
回复 @捷乘 : 一般多表关联查询都是用于报表,你可以报表查询使用mybatis,而业务逻辑开发用hibernate,这样不损失开发速度,也利于后期报表性能优化。
水表
回复 @捷乘 : 我觉得或者搞两套dao是个好办法 save update 单表查询 操作用jpa 或者hibernate 联合查询 用mybatis ,hibernate 用来做复杂的多表关联查询的话用hql也不是很好 ,但是hibernate做原生sql查询虽然也可以 ,但是没有mybatis清晰。
捷乘
是的,是这个意思. 单表还行,多表就麻烦了. 其实我们这边用Hibernate,主要是因为他修改插入方便 真正查询我们还是用原生的SQL,我们只写一个BaseDao的类, 缩小了,前后台的层次,直接使用,快速方便,兄弟有这块的资料吗?指点一下,
返回顶部
顶部