package com.rlovep.hello;
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.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;
/**
*
* @ClassName: CrudByHibern
* @Description: 增删改查
* @author peace w_peace@163.com
* @date 7 Jan 2016 10:49:25 am
*
*/
public class CrudByHibern {
private static SessionFactory sf=null;
static{
Configuration config=new Configuration();
// 默认加载src/hibenrate.cfg.xml文件
config.configure();
//创建serviceRegistry 代替buildSessionFactory()方法
ServiceRegistry serviceRegistry =new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
// 创建session的工厂对象
sf = config.buildSessionFactory(serviceRegistry);
}
@Test
public void testSave(){
//对象
Employee emp=new Employee();
emp.setEmpName("peace2");
emp.setWorkDate(new Date());
//获得session
Session session = sf.openSession();
//开启事务
Transaction tx = session.beginTransaction();
//执行操作
session.save(emp);
//提交事务和关闭session
tx.commit();
session.close();
}
@Test
public void testdelete() {
// 对象
Employee emp = new Employee();
emp.setEmpId(1);
emp.setEmpName("peace1");
emp.setWorkDate(new Date());
// 获得session
Session session = sf.openSession();
// 开启事务
Transaction tx = session.beginTransaction();
// 执行操作
session.delete(emp);
// 提交事务和关闭session
tx.commit();
session.close();
}
@Test
public void testUpdate() {
// 对象
Employee emp = new Employee();
emp.setEmpId(1);
emp.setEmpName("peace1");
emp.setWorkDate(new Date());
// 获得session
Session session = sf.openSession();
// 开启事务
Transaction tx = session.beginTransaction();
// 执行操作
session.saveOrUpdate(emp);
// 提交事务和关闭session
tx.commit();
session.close();
}
//HQL查询 【适合有数据库基础的】 区分大小写 比喻将Employee变为employee就会报错
@Test
public void testQuery() {
// 获得session
Session session = sf.openSession();
// 开启事务
Transaction tx = session.beginTransaction();
// 执行操作
Query query = session.createQuery("from Employee where empId=1 or empId=2");
List<Employee>list=query.list();
System.out.println(list);
// 提交事务和关闭session
tx.commit();
session.close();
}
//QBC查询 , query by criteria 完全面向对象的查询
@Test
public void testQBC() {
// 获得session
Session session = sf.openSession();
// 开启事务
Transaction tx = session.beginTransaction();
// 执行操作
//条件
Criteria criteria = session.createCriteria(Employee.class);
criteria.add(Restrictions.eq("empId", 1));
//查询
List<Employee> list = criteria.list();
System.out.println(list);
// 提交事务和关闭session
tx.commit();
session.close();
}
@Test
public void testSqlQuery() {
// 获得session
Session session = sf.openSession();
// 开启事务
Transaction tx = session.beginTransaction();
// 执行操作
Query query = session.createSQLQuery("select * from employee where empId=1 or empId=2").addEntity(Employee.class);
List<Employee>list=query.list();
System.out.println(list);
// 提交事务和关闭session
tx.commit();
session.close();
}
// 自动建表
@Test
public void testCreate() throws Exception {
// 创建配置管理类对象
Configuration config = new Configuration();
// 加载主配置文件
config.configure();
// 创建工具类对象
SchemaExport export = new SchemaExport(config);
// 建表
// 第一个参数: 是否在控制台打印建表语句
// 第二个参数: 是否执行脚本
export.create(true, true);
}
}