`
吕金含
  • 浏览: 87865 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Hibernate用于测试refresh的方法、get和load的区别、测试persist和save的区别

 
阅读更多
package com.eduask.test;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Before;
import org.junit.Test;
import com.eduask.pojo.Student;
import com.eduask.util.HibernateUtil;
public class StudentTest {
private SessionFactory sessionFactory;
@Before
public void setUp() throws Exception {
//使用hibernateUtil工具类来创建单例的sessionFactory 对象
//再使用sessionFactory 对象来创建session
//工具类提供一个创建session的方法
sessionFactory=HibernateUtil.getSessionFactory();
}
//根据用户id查询;
@Test
public void testSelectById() {
Session session=sessionFactory.openSession();
// 根据id查询emp数据
Student s = (Student) session.get(Student.class, 1);
System.out.println(s);
}
//增加;
@Test
public void testInsert(){
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
Student s=new Student(1, "tom", "男");
session.save(s);
tx.commit();

}
//更新数据;
@Test
public void testUpdate(){
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
Student s=(Student) session.get(Student.class, 3);
s.setName("link");
//session.flush();//只是执行数据库,但是没有提交;
tx.commit();//执行了数据库,并提交;

}
//测试refresh;
@Test
public void testRefresh(){
Session session=sessionFactory.openSession();
Student s1=(Student) session.get(Student.class, 3);
System.out.println(s1);
session.refresh(s1); //添加refresh方法则会执行两次sql语句;
Student s2=(Student) session.get(Student.class, 3);
System.out.println(s2);
session.close();

}
//测试get和load的之间的区别;
@Test
public void testGetAndLoad(){
Session session=sessionFactory.openSession();
//get方法中如果数据库中没有对应的信息,结果会放回null;
Student s1=(Student) session.get(Student.class, 100);
System.out.println(s1);
//load方法中如果数据库中没有对应的信息,结果会返回异常ObjectNotFoundException;
Student s2=(Student) session.load(Student.class, 100);
System.out.println(s2);
session.close();

}


//测试persist和save的区别;
@Test
public void testPersistAndSave(){
Session session=sessionFactory.openSession();
Transaction tr=session.beginTransaction();
//get方法中如果数据库中没有对应的信息,结果会放回null;
Student s=new Student(2, "tom", "男");
s.setId(2);
session.save(s);
session.persist(s);//执行persist方法时:对应的id不能为null否则会抛出PersistentObjectException异常;
tr.commit();

}


}
分享到:
评论

相关推荐

    hibernate的flush()、refresh()、clear()针对一级缓存的操作的区别.docx

    总的来说,理解和掌握Hibernate的`flush()`, `refresh()`, `clear()`方法对于优化数据库交互和处理并发问题是至关重要的。在实际开发中,根据具体需求和业务逻辑,合理使用这些方法,可以显著提升系统的性能和数据...

    hibernate 中文文档 and _annotation.chm

    - 加载和刷新:load()和get()用于根据ID加载对象,refresh()用于刷新对象状态。 - 回滚和提交:在Transaction中进行,rollback()用于回滚事务,commit()用于提交事务。 5. Hibernate缓存: - 第一级缓存:每个...

    iscroll5的demo,pull to refresh ,pull to load(下拉刷新,上拉加载)

    本示例(`IScrollDemo`)主要展示了iscroll5的两个关键功能:**下拉刷新(Pull to Refresh)**和**上拉加载(Pull to Load More)**,这些都是现代Web应用中常见的交互模式。 1. **下拉刷新(Pull to Refresh)** ...

    Hibernate_级联关系说明_-_关于cascade和inverse的用法

    @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE}) private User user; ``` 在上面的例子中,我们设置了`inverse=true`,这意味着 `Address` 实体不再负责维护与 `User` ...

    Spring源码refresh方法调试笔记

    通过以上步骤可以看出,`refresh`方法涉及到了多个关键类和方法,从初始化环境、创建Bean工厂到最后的配置准备,每一环节都至关重要。理解这些细节对于深入掌握Spring框架的工作原理具有重要意义。

    Refresh and load more Table

    综上所述,“Refresh and Load More Table”是一个涉及用户交互、视图控制、数据管理和网络通信等多个方面的复杂功能,需要开发者具备全面的iOS开发技能和良好的用户体验设计意识。在实际项目中,开发者通常会借助像...

    hibernate 级联(cascade和inverse)一对多

    在Java的持久化框架Hibernate中,级联操作(Cascade)和反转(Inverse)是两个重要的概念,它们主要用于管理对象关系模型中的关联关系。在一对多的关系中,这些特性可以帮助简化数据操作,提高代码的可读性和维护性...

    hibernate的_CascadeType属性说明

    在 Hibernate 中,CascadeType属性通常用于@OneToMany、@ManyToOne和@ManyToMany注解中,用于定义实体之间的级联操作。例如,在订单系统中,订单和订单项之间的关系可以使用@OneToMany注解,并设置CascadeType为ALL...

    HIbernate免注解实现操作数据库 及Hibernate3连接SQL的BUG解决办法

    例如,通过`save()`或`saveOrUpdate()`方法保存实体,`get()`或`load()`方法获取实体,`update()`更新实体,`delete()`删除实体。 6. **事务管理**: 数据库操作通常需要在事务中进行,使用Session的`begin...

    hibernate

    常见的`cascade`选项包括`SAVE_UPDATE`, `DELETE`, `MERGE`, `REFRESH`, `PERSIST`, 和 `ALL`。 #### Inverse 关联的拥有者 `inverse`属性用于指定哪一方负责维护关联关系。当设置`inverse=true`时,表示该实体...

    hibernate-3.2.rar

    `Session`提供了`save()`, `update()`, `delete()`, `load()`, `get()`等方法,用于持久化对象。 5. **事务管理**:`Transaction`接口负责处理数据库事务,如`begin()`, `commit()`, `rollback()`等。在Hibernate ...

    hibernate常见异常

    * 使用 session.refresh(object),当 object 不是数据库中已有数据的对象的时候,不能使用 session.refresh(object) 因为该方法是从 Hibernate 的 session 中去重新取 object,如果 session 中没有这个对象,则会...

    Hibernate开发向导

    - **使实体持久化**:通过Session的`save()`方法将实体保存到数据库中。 - **删除实体**:使用`delete()`或`remove()`方法删除实体。 - **获取实体引用**:通过`load()`方法获取实体引用而不初始化其数据。 - **初始...

    hibernate黑马全视频重点记录

    二级缓存需要配置,并且在查询时需要考虑其使用,例如,`get()`和`load()`方法在获取对象时会利用缓存,而`query.list()`默认不使用缓存。 9. **主键生成策略**: Hibernate提供了多种主键生成策略,如手动分配(`...

    Hibernate 注解映射

    * cascade 属性:指定级联操作的行为,可以选择 CascadeType.PERSIST、MERGE、REMOVE、REFRESH 和 ALL。 * 在双向关联中,需要通过调用双方的 set 方法来建立关系。 Hibernate 注解映射提供了一种简单、灵活的方式...

    Hibernate的级联操作(增,删,该)

    除了上述常见的级联类型,Hibernate还提供了其他的级联选项,如`CascadeType.REFRESH`用于刷新关联对象的状态,`CascadeType.DETACH`用于断开与Session的关联,以及`CascadeType.HALF`等更复杂的级联行为。...

    Selenium2 Python 自动化测试实战学习笔记

    在本篇学习笔记中,我们将深入探讨"Selenium2 Python 自动化测试"这一主题,它是一种广泛应用于Web应用测试的技术,结合Python编程语言,能够实现高效、可维护的自动化测试用例。Selenium2(也被称为Selenium ...

    Hibernate 注解说明文档

    2. **@Cascade**: 设置级联操作,如PERSIST、MERGE、REMOVE、REFRESH等,使得操作在关联对象间同步。 七、其他注解 1. **@Temporal**: 对日期和时间类型的特殊处理,如TIMESTAMP、DATE、TIME。 2. **@Transient**:...

    Hibernate学习笔记!

    4. **加载和刷新(Load/Refresh)**: Hibernate通过load()方法加载对象,通过refresh()方法更新对象状态。 **四、查询语言** 1. **HQL(Hibernate Query Language)**: Hibernate的面向对象查询语言,类似SQL,但...

    Eclipse下配置和使用Hibernate_Tools

    Eclipse 下配置和使用 Hibernate Tools Hibernate 是一个非常流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE),它提供...

Global site tag (gtag.js) - Google Analytics