hibernate mysql autocommit_Hibernate4 中为什么我没有用commit()方法直接用save就存到数据库了?...

求大神讲解下

Hibernate4 中为什么我没有用commit()方法直接用save就存到数据库了?

public class Main {

public static void main(String[] args) {

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

Student student = new Student();

student.setAge(11);

student.setName(“save”);

student.setSex(“男”);

student.setAcademicYear(“99999”);

Session session = sessionFactory.getCurrentSession();

Transaction ts = session.beginTransaction();

session.save(student);

}

}

貌似明白了   只要打印出 sql语句就 执行到数据库了?

Hibernate: insert into student (_name, _age, _sex, _academicYear, _id) values (?, ?, ?, ?, ?)

我把student.hbm.xml  中的

改为

再测试  只save()不commit()就不会对数据库 操作了

1分

不配置主键生成策略会报错吧???

1分

大家顶起来了啊

一直理解只是主键生成策略,为了便于移植底层数据库才用native的吗?怎么会和事务有关系

需要测试下

不会报错呀    我怎么在你留言上回复?

1分

你是getCurrentSession的话自动提交

但是你后面说的那种情况很奇怪,照理说和主键木有关系啊

等大神解释

我测试下 getCurrentSession 改成openSession 试试  谢谢

public static void main(String[] args) {

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

Student student = new Student();

student.setAge(11);

student.setName(“save”);

student.setSex(“男”);

student.setAcademicYear(“99999”);

//Session session = sessionFactory.getCurrentSession();

Session session = sessionFactory.openSession();

Transaction ts = session.beginTransaction();

//Student student2 = (Student)session.load(Student.class, 1);

//System.out.println(student2.getName());

session.save(student);

//ts.commit();

}

貌似不行

_id  _name  _age  _sex  _academicYear

1   save    11    男   99999

还是有数据

1分

Hibernate都到4了,是该学习了

1分

我前几天用4.1.8  session不是你这样取的啊!

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();

Event theEvent = new Event();

theEvent.setTitle(title);

theEvent.setDate(theDate);

session.save(theEvent);

session.getTransaction().commit();

4.1.8 final  文档里就是上面的写法啊

怎么在用户的留言回复呀

1分

去试试了,

43分

你会结贴不呢?

原因是数据源conn默认的提交方式,hibernate封装的jdbc,因为jdbc默认是的conn提交方式是true

这样 就应该不能提交了

public static void main(String[] args) throws Exception {

SessionFactory sf=HibernateSessionFactory.getSessionFactory();

Session session=sf.openSession();

System.out.println(session.connection().getAutoCommit());

session.connection().setAutoCommit(false);

User u=new User();

u.setName("aaa");

session.save(u);

}

1分

hibernate4 好像变动很大、

要看你hibernate文件是如何配置事务的、

getCurrentSession();这样获取的session是就可以不用手动关闭了、

其实跟session有关、

我的猜测是 getCurrentSession() 获取到了你配置的事务、

最后将数据库flush到了数据库中、

以上也都是个人猜测而已、没有看hibernate4的源码、只晓得hibernate4相比hibernate3变动挺大的

该结贴 了

总结下  测试的程序

SessionFactory sessionFactory = HibernateUtil.getAnnotationSessionFactory();

Session session = sessionFactory.getCurrentSession();

Transaction ts = session.beginTransaction();

Husband h1 = new Husband();

h1.setName(“w1”);

Wife w1 = new Wife();

w1.setName(“ll”);

h1.setMyWife(w1);

session.save(w1);

session.save(h1);

//session.clear() 在这调用 clear()commit后数据库有内容说明save 自动提交了

w1.setName(“wwww”);

w1.setName(“qqq”);

//session.clear() 在这里调用clear()不会访问数据库 缓存清空了

try{

ts.commit();

}catch(Exception e){

System.out.println(“回滚”);

ts.rollback();

}

还有 我用了Annotation后  只save()不commit() 数据库里没有内容。用xml会有内容  可能是   scottxzj 说的吧   我在试试结贴

session.connection()   在  4.1.8 中已废除了  郁闷

失误  没有结贴     测试 失败!

try {

System.out.println(session.connection().getAutoCommit());

session.connection().setAutoCommit(false);

} catch (HibernateException e1) {

e1.printStackTrace();

} catch (SQLException e1) {

e1.printStackTrace();

}

测试结果

false

Hibernate:

insert

into

Wife

(name)

values

(?)

Hibernate:

insert

into

Husband

(myWife_id, name)

values

(?, ?)

我想知道SSH中是怎么管理事物的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java ee文件下载_JavaEE实现文件下载

我们先来看一个最简单的文件下载的例子:package com.yyz.response;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.…

python输出jpg_利用python实现.dcm格式图像转为.jpg格式

如下所示:import pydicomimport matplotlib.pyplot as pltimport scipy.miscimport pandas as pdimport numpy as npimport osdef Dcm2jpg(file_path):#获取所有图片名称c []names os.listdir(file_path) #路径#将文件夹中的文件名称与后边的 .dcm分开for name in…

java联合主键_hibernate联合主键映射(注解版)

1、联合主键的映射三种写法实体类:package com.zhouwei.po;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.IdClass;import javax.persistence.Table;//联合主键(通过id和name确定一个人)EntityTable(name"t_person&q…

python 如何边改代码边调试_Python 代码调试神器:PySnooper

给大家推荐本我自己写的电子书《PyCharm中文指南》,把各种 PyCharm 的高效的使用技巧用GIF动态图的形式展示出来。有兴趣的可以看它的在线文档:http://pycharm.iswbm.com对于每个程序开发者来说,调试几乎是必备技能。代码写到一半卡住了&…

python 代理服务器_Python实现HTTP代理服务器

这些天闲来无事就研究了下HTTP代理原理,顺便用Python做了个很挫的程序。import socketimport threadingclass ProxyServer():def __init__(self):self.ListenSock socket()self.ListenSock.bind()self.Clients []def listen_thread(self):self.ListenSock.listen(…

java 如何导出json文件_java导出json格式文件的示例代码

本文介绍了java导出json格式文件的示例代码,分享给大家,具体如下:import java.io.File;import java.io.FileWriter;import java.io.Writer;public class CreateFileUtil {/*** 生成.json格式文件*/public static boolean createJsonFile(Stri…

python执行shell命令、并获取执行过程信息_python执行使用shell命令方法

1. os.system(shell_command)直接在终端输出执行结果,返回执行状态0,1此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出状态,如果command有执行内容,会在标准输出显示。这实际上是使用C标…

java安全框架有哪些_Java开发必备教程-细说Spring Security安全框架

一、Spring Security介绍spring security 是基于 spring 的安全框架。它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权。在 Spring Framework 基础上,spring security 充分利用了依赖注入(DI)和面向切面编程(AOP)功能&…

无法读取源文件或磁盘_raid磁盘阵列作用

磁盘阵列的作用:1.提高传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可…

java none怎么用tomcat_JavaWeb学习——在Eclipse里使用Tomcat

JavaWeb学习——在Eclipse里使用Tomcat摘要:本文主要学习了如何在Eclipse里使用Tomcat服务器。添加Tomcat打开Eclipse的配置页面,点击菜单上的“Window”,在下拉菜单中找到“Preferences”:找到运行环境的配置页面,如果…

mysql b 树原因_复习系列之数据库(四):MySQL为什么采用B+树作为索引结构?

MySQL中数据是索引组织表,即表中数据按照主键顺序存放。所以就可以基于索引这种数据结构实现一些高级算法,来提高检索效率。常见的查找算法顺序查找:复杂度O(n),在数据量大时,效率很低二分查找:在有序为前提…

关于python类_python中类的总结

1、 类中的方法在类里主要有三种方法:a、普通方法:在普通方法定义的时候,需要一个对象的实例参数,从而在类中定义普通方法的时候,都必须传送一个参数self,那么这个参数也就是objectb、类方法:在…

折线图 java_java报表折线图

package com.potevio.rnd.tobacco.mine;import java.util.Map;/*** description 数据BEAN* author Zhou-Jingxian*/public class Bean {private String goods_name ;private Map priceindexMap;public String getGoods_name() {return goods_name;}public void setGoods_name(S…

windows无法检索有关这台计算机上的磁盘信息_磁盘镜像软件OO DiskImage Pro 15.5介绍及安装教程...

Active Disk Image是一种磁盘映像软件,可以精确复制任何PC磁盘(HDD,SSD,USB,CD,DVD,Blu-ray等)并将其存储在文件夹中。磁盘映像可用于备份,PC升级或磁盘复制。万一计算机出现故障,可…

java中的抽象方法_Java中的抽象类和抽象方法

###Java中的抽象方法和抽象类:abstract:关键字,可以用于修饰方法和类抽象方法:不同类的方法是相似的,但是具体实现的内容又不太一样,没有具体的方法体。抽象类:有抽象方法的类必须是抽象类类与抽象类的关系…

word手写字体以假乱真_Word小技巧|打印作文草稿纸

前期介绍过一些Word使用中的小技巧,例如WORD快速查找的2个小技巧 https://www.iappi.cn/2019_08/20191147.html,使用Word创建九宫格图像 https://www.iappi.cn/2019_07/20191064.html 等。今天再分享一个打印作文草稿纸的技巧。很多时候需要规范写好作文…

java 判断范围_java判断一个点是否在一个围栏范围内

应项目需求,需要判断一个点所属哪个区域范围内管辖,突然想起来三年前做了个外卖的项目里面有个功能,判断用户是否在商家自己划的配送范围内,又找回来以前的代码来看了下,所以在此处记录一下DataNoArgsConstructorAllAr…

概要设计说明书_没有什么比牙签更好的设计了

牙签是设计公理的典型例子,形式服从功能。它的形式和功能是单一的、紧凑的、轻质的、可生物降解的、可持续的实体。不证自明的:它的形状是设计功能的缩影,同时作为手柄和说明书。它的形状不仅告诉你如何握住和使用它,而且告诉你把…

java项目log4j_java项目测试log4j

一、基础入门1.1 下载安装下载相应的log4j-1.2.15.jar(也可以下载其他的版本)提供一个下载jar包的网站(http://search.maven.org/)新建一个log4j.properties文件:#配置根Loggerlog4j.rootLoggerinfo, RF #info代表的是日志输出的级别log4j.appender.RForg.apache.lo…

webrtc 代码_英特尔开源WebRTC开发套件OWT

为了抢占实时视频的巨大市场,英特尔开源了WebRTC开发套件,并将其命名为Open WebRTC Toolkit (OWT)。由于实时视频编码、转码需要大量的计算资源,Open WebRTC Toolkit将为英特尔带来巨大的潜在商业回报。文 / Ant去年在旧金山举办的2018 Krank…