为了账号安全,请及时绑定邮箱和手机立即绑定
  • @GetCurrentSession——(下) session4 = sessionFactory.getCurrentSession(); session5 = sessionFactory.getCurrentSession(); if(session4==session5){ System.out.println(true); }else{ System.out.println(false); } transaction = session4.beginTransaction();// 开启事务 Student s4 = new Student("Jack", "女", new Date().toString(), "虹桥"); session4.doWork(new Work() { @Override public void execute(Connection conn) throws SQLException { System.out.println("session4_hashCode:" + conn.hashCode()); } }); session5.doWork(new Work() { @Override public void execute(Connection conn) throws SQLException { System.out.println("session5_hashCode:" + conn.hashCode()); } }); session4.save(s4); transaction.commit();// 提交事务 } @输出: session3_hashCode:1099677525 session4_hashCode:1399877303 session5_hashCode:1399877303 Ps:getCurrentSession可以理解像单例模式。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @GetCurrentSession——(上) @Test public void testSaveStudentWithGetCurrentSession() { SessionFactory sessionFactory; Transaction transaction; Session session3, session4,session5; Configuration config = new Configuration().configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .applySettings(config.getProperties()).buildServiceRegistry(); sessionFactory = config.buildSessionFactory(serviceRegistry); session3 = sessionFactory.getCurrentSession(); transaction = session3.beginTransaction();// 开启事务 Student s3 = new Student("Jack", "男", new Date().toString(), "虹桥"); session3.doWork(new Work() { @Override public void execute(Connection conn) throws SQLException { System.out.println("session3_hashCode:" + conn.hashCode()); } }); session3.save(s3); transaction.commit();// 提交事务 ... Ps:GetCurrentSession:session自动关闭是在commit();后,所以session3对象和session4对象hashCode不一样,因为已经关闭,内存已经释放掉,但是session4和session5因为还没关闭,所以获取的是同一个对象。
    查看全部
  • @OpenSession——(下) session2 = sessionFactory.openSession(); transaction = session2.beginTransaction();// 开启事务 Student s2 = new Student("Jack", "女", new Date().toString(), "虹桥"); session2.doWork(new Work() { @Override public void execute(Connection conn) throws SQLException { System.out.println("session2_hashCode:" + conn.hashCode()); } }); session2.save(s2); transaction.commit();// 提交事务 } @输出: session1_hashCode:2018078818 session2_hashCode:22221156 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @OpenSession——(上) @Test public void testSaveStudentWithOpenSession() { SessionFactory sessionFactory; Transaction transaction; Session session1, session2; Configuration config = new Configuration().configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .applySettings(config.getProperties()).buildServiceRegistry(); sessionFactory = config.buildSessionFactory(serviceRegistry); session1 = sessionFactory.openSession(); transaction = session1.beginTransaction();// 开启事务 Student s1 = new Student("Jack", "男", new Date().toString(), "虹桥"); session1.doWork(new Work() { @Override public void execute(Connection conn) throws SQLException { System.out.println("session1_hashCode:" + conn.hashCode()); } }); session1.save(s1); transaction.commit();// 提交事务 ... 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @本地事务和全局事务: 全局事务:资源管理器管理和协调的事务,可以跨越多个数据库和进程。资源管理器一般使用 XA 二阶段提交协议与“企业信息系统”(EIS) 或数据库进行交互。 本地事务:在单个 EIS 或数据库的本地并且限制在单个进程内的事务。本地事务不涉及多个数据来源。 Ps:如果有多个@Test,按照代码流思想来执行。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • @SessionTest.java @Test public void testOpenSession() { SessionFactory sessionFactory; Session session; // 创建配置对象 Configuration config = new Configuration().configure(); // 创建服务注册对象 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .applySettings(config.getProperties()).buildServiceRegistry(); // 创建会话工厂对象 sessionFactory = config.buildSessionFactory(serviceRegistry); // 会话对象 session = sessionFactory.openSession(); if(session!=null){ System.out.println("openSession_session创建成功!"); }else{ System.out.println("openSession_session创建失败!"); } } @Test public void testGetCurrentSession() { ... session = sessionFactory.getCurrentSession(); if(session!=null){ System.out.println("getCurrentSession_session创建成功!"); }else{ System.out.println("getCurrentSession_session创建失败!"); } } @hibernate.cfg.xml <property name="hibernate.current_session_context_class">thread</property> @输出: openSession_session创建成功! getCurrentSession_session创建成功!
    查看全部
  • hibernate.cfg.xml常用配置
    查看全部
  • 1、Hibernate对数据的操作都是封装在事务当中,并且默认是非自动提交的方式。所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。 2、如果不开启事务,并想让Hibernate像jdbc那样自动提交事务,必须调用session对象的doWork()方法,获得jdbc的connection后,设置其为自动提交事务模式。(注意:通常并不推荐这样做) Ps:记得在session.save();前操作doWork(new Work(){conn.setAutoCommit(true);});时,记得在session.save();后调用session.flush();。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    0 采集 收起 来源:transaction简介

    2016-08-26

  • 1.不建议直接使用jdbc的connection操作数据库,而是通过session操作数据库。 2.session可以了解为操作数据库的对象,操作数据库之前必须先获取session的实例 3.session与connection,是多对一关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用。 4.把对象保存到关系数据库中需要调用session的各种方法:save(),delete(),update(),createQuery()————增、删、改、查。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    0 采集 收起 来源:session简介

    2016-08-26

  • <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hibernate.default_schema">hibernate</property>//设置前提在hbm.xml里没有设置schema="dbo" catalog="hibernatedb";否则无效,hbm.xml设置会优先。 <property name="hbm2ddl.auto">create</property> 1、create:先删除原有的表,然后重新生成。 2、update:不会删除原有的表,在原有的基础上继续操作。 Ps:对于Oracle此为用户名,不是表空间;对于MySql此为数据库名:hibernate.default_schema=excavator 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • Ps1:创建里面可以存放包/类的文件夹:项目——New——Source Folder(作用同src文件夹)。 Ps2:注意导入的包都是hibernate和junit。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • hibernate配置文檔
    查看全部
  • dialect就是“方言”,因为hibernate是要把Java对象转换成关系数据库来描述的,而关系数据库虽然有一些统一的标准,如SQL-92等,但是实际上各数据库如Oracle, MySQL, MS SQL Server等等为了提高性能或增加功能都提供了一些额外的标准或语法,因此,hibernate为了更好适配各种关系数据库,针对每种数据库都指定了一个方言dialect。你可以看到hibernate里面实际上方言只是一个类,它里面将不同数据类型、SQL语法转换成hibernate能理解的统一的格式。但注意,如果没有对应的dialect,Hibernate是无法使用这种数据库进行对象关系转换的。 Ps:执行顺序:@Before——@Test——@After 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • get和load的区别
    查看全部
  • get和load
    查看全部

举报

0/150
提交
取消
课程须知
小伙伴们,学习本门课程前需要具备Java基础知识和面向对象编程思想,并能够熟练使用JDBC操作Mysql数据库。
老师告诉你能学到什么?
1、理解ORM模型 2、掌握Hibernate基本概念 3、能够熟练创建Hibernate实例

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!