springboot hibernate无法保存成功 对事务这块我不太了解,一直用的是
这个框架是网上若依的,很好,但是用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
是的,是这个意思. 单表还行,多表就麻烦了. 其实我们这边用Hibernate,主要是因为他修改插入方便 真正查询我们还是用原生的SQL,我们只写一个BaseDao的类, 缩小了,前后台的层次,直接使用,快速方便,兄弟有这块的资料吗?指点一下,
回复
我觉得或者搞两套dao是个好办法 save update 单表查询 操作用jpa 或者hibernate 联合查询 用mybatis ,hibernate 用来做复杂的多表关联查询的话用hql也不是很好 ,但是hibernate做原生sql查询虽然也可以 ,但是没有mybatis清晰。
回复
一般多表关联查询都是用于报表,你可以报表查询使用mybatis,而业务逻辑开发用hibernate,这样不损失开发速度,也利于后期报表性能优化。
引用来自“pullFoot_yonth”的评论
都用springboot 了, 直接用jpa不就行了, 还在使用entityManager这种低层次的api?
还以为是一样的 那我往这个方向找资料
回复
springboot 默认的jpa实现就是hibernate
都用springboot 了, 直接用jpa不就行了, 还在使用entityManager这种低层次的api?
楼下的兄弟jpa?
直接看官网吧