1. 增删改
package com.bjsxt.test; import java.io.Serializable; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Before; import org.junit.Test;
import com.bjsxt.pojo.Stu;
/** * @ClassName:TestHibernate * @Description: 使用单元测试 * @author mengqx * @date 2017年8月31日 */
public class TestHibernate { private Configuration configuration = null; private SessionFactory sessionFactory = null; private Session session = null;
@Before public void init() { // 读取配置文件 configuration = new Configuration().configure("hibernate.xml"); // 创建会话工厂 sessionFactory = configuration. // 创建session 会话 session = sessionFactory.openSession(); System.out.println(session); }
@Test public void testHibernate() { // 调用session中的方法了。 Stu stu = (Stu) session.get(Stu.class, 2);
System.out.println(stu);
session.close(); }
/** * * @Description: 添加数据 hibernate:只要是操作DML语言都要开启事务。 * @author mengqx * @date 2017年8月31日 */ @Test public void add() { // 声明要添加的对象 Stu stu = new Stu(210, "施瓦辛格1号2", "1324"); // 需要开启事务 Transaction transaction = session.beginTransaction(); Serializable save = null; try { save = session.save(stu); // 提示事务 transaction.commit(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); // 回滚事务 transaction.rollback(); } finally { session.close(); } System.out.println(save + "------------"); }
/** * * @Description: hibernate 在更新的时候,是根据id进行更新,并且会对此id所对应的数据,所有字段都进行修改。 * @author mengqx * @date 2017年8月31日 */ @Test public void update() { // 知道要修改的对象。 Stu stu = new Stu(); stu.setId(210); stu.setPwd("555555"); stu.setName("阿米尔汗-帅!"); // 开启事务 Transaction transaction = session.beginTransaction(); // 更新数据 try { session.update(stu); // 提交事务 transaction.commit(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); transaction.rollback(); } finally { session.close(); } }
@Test public void delete() { // 创建要删除的对象 Stu stu = new Stu(); stu.setId(210); // 开启事务 Transaction transaction = session.beginTransaction(); // 删除数据 try { session.delete(stu); transaction.commit(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); transaction.rollback(); } finally { session.close(); }
}
} |
2. OID查询
根据主键ID进行查询:get,load
package com.bjsxt.test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.Before; import org.junit.Test;
import com.bjsxt.pojo.Stu;
/** * @ClassName:THibernate * @Description: * @author mengqx * @date 2017年8月31日 */
public class THibernate {
private Configuration configuration = null; private SessionFactory sessionFactory = null; private Session session = null;
@Before public void init() { // 读取配置文件 configuration = new Configuration().configure("hibernate.xml"); // 创建会话工厂 sessionFactory = configuration.buildSessionFactory(); // 创建session 会话 session = sessionFactory.openSession(); System.out.println(session); }
@Test public void hget() { // get 方法 第一个参数传递类的字节码文件,第二个参数传递要查询的id值。 // get 方法默认返回值是Object, 我们可以通过强制类型转换成我们所需要的类 Stu stu = (Stu) session.get(Stu.class, 2); // 关闭会话 session.close(); System.out.println(stu); }
/** * * @Description: get方法和load方法区别是啥? 使用get的时候,如果将会话关闭之后,则数据会依然存在。 * 使用load的时候,将会话关闭之后,则数据不会存在。 延时加载的问题。 * @author mengqx * @date 2017年8月31日 */ @Test public void hload() { // load 方法 第一个参数传递类的字节码文件,第二个参数传递要查询的id值。 // load 方法默认返回值是Object, 我们可以通过强制类型转换成我们所需要的类 Stu stu = (Stu) session.load(Stu.class, 2); // 关闭会话 session.close(); System.out.println(stu); } } |