当前位置 : 主页 > 编程语言 > c++ >

hibernate框架

来源:互联网 收集:自由互联 发布时间:2021-07-03
hibernate的映射配置文件(hbm.xml) 主配置文件(cig.xml) com.mysql.jdbc.Driver jdbc:mysql:///worknotes dev dev org.hibernate.dialect.MySQLDialect true true update 4 thread hibernate自用工具类 import org.hibernate.Sessio
hibernate的映射配置文件(hbm.xml)
 


 

   
    
     
    
    
    
    
    
    
  

 
主配置文件(cig.xml)
 


 
	
   
    
    
   
    com.mysql.jdbc.Driver
    
    
   
    jdbc:mysql:///worknotes
    
    
   
    dev
    
    
   
    dev
    
    
   
    org.hibernate.dialect.MySQLDialect
    
    
    
   
    true
    
    
   
    true
    
    
   
    update
    
    
   
    4
    
    
   
    thread
    
    
    
  

 
hibernate自用工具类
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class hibernateUtils {
	public Session OpenSession(){
		Configuration conf=new Configuration().configure();
		SessionFactory sf = conf.buildSessionFactory();
		Session session = sf.openSession();
		return session;		
	}


}
hibernate使用测试
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.learn.Dao.StudentDao;
import com.learn.Utils.hibernateUtils;

public class testHiber {
	public static void main(String [] agrs){
		testHiber h=new testHiber();
		h.test();
	}
		public void test(){
			//1.创建,调用空参构造
		Configuration conf=new Configuration().configure();
		//2.读取指定配置文件 空参加载默认src/hibernate.cfg.xml
		//conf.configure();
		//3用于创建操作数据库核心对象session对象的工厂
		//注意1.sessionFactory负责保存和使用配置信息。消耗内存资源非常大。
		//   2.sessionFactory属于线程安全的对象设计
		//结论:保证在web项目中,至创建一个sessionFactory。
		SessionFactory sf = conf.buildSessionFactory();
		//4.获得session
		Session session = sf.openSession();//打开一个新的session
		//session对象功能:表达hibernate框架与数据库之间的连接(回话)类似于jdbc的Connection
		//5.session获得操作十五的transaction对象
		Transaction tx = session.beginTransaction();
		StudentDao s=new StudentDao();
		s.setSno("yihao");
		s.setSname("hibernat");
		s.setSex("nan");
		session.save(s);
		tx.commit();		
		session.close();
		sf.close();
		
		}
		@Test
		public void testUtils(){
			Session session=new hibernateUtils().OpenSession();
			Transaction tx = session.beginTransaction();
			StudentDao s=new StudentDao();
			s.setSno("NUMber02");
			s.setSname("hiber");
			s.setSex("nv");
			session.save(s);
			tx.commit();		
			session.close();
			//sf.close();
		}
}
hql查询
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import cn.itheima.domain.Customer;
import cn.itheima.utils.HibernateUtils;

//测试HQL语句
public class Demo {

	@Test
	//基本查询
	public void fun1(){
		//1 获得session
		Session session = HibernateUtils.openSession();
		//2 控制事务
		Transaction tx = session.beginTransaction();
		//3执行操作
		//-------------------------------------------
		//1> 书写HQL语句
//		String hql = " from cn.itheima.domain.Customer ";
		String hql = " from Customer "; // 查询所有Customer对象
		//2> 根据HQL语句创建查询对象
		Query query = session.createQuery(hql);
		//3> 根据查询对象获得查询结果
		List
 
   list = query.list();	// 返回list结果
		//query.uniqueResult();//接收唯一的查询结果
		
		System.out.println(list);
		//-------------------------------------------
		//4提交事务.关闭资源
		tx.commit();
		session.close();// 游离|托管 状态, 有id , 没有关联
		
		
	}
	
	@Test
	//条件查询
	//HQL语句中,不可能出现任何数据库相关的信息的
	public void fun2(){
		//1 获得session
		Session session = HibernateUtils.openSession();
		//2 控制事务
		Transaction tx = session.beginTransaction();
		//3执行操作
		//-------------------------------------------
		//1> 书写HQL语句
		String hql = " from Customer where cust_id = 1 "; // 查询所有Customer对象
		//2> 根据HQL语句创建查询对象
		Query query = session.createQuery(hql);
		//3> 根据查询对象获得查询结果
		Customer c = (Customer) query.uniqueResult();
		
		System.out.println(c);
		//-------------------------------------------
		//4提交事务.关闭资源
		tx.commit();
		session.close();// 游离|托管 状态, 有id , 没有关联
		
		
	}
	
	@Test
	//条件查询
	//问号占位符
	public void fun3(){
		//1 获得session
		Session session = HibernateUtils.openSession();
		//2 控制事务
		Transaction tx = session.beginTransaction();
		//3执行操作
		//-------------------------------------------
		//1> 书写HQL语句
		String hql = " from Customer where cust_id = ? "; // 查询所有Customer对象
		//2> 根据HQL语句创建查询对象
		Query query = session.createQuery(hql);
		//设置参数
		//query.setLong(0, 1l);
		query.setParameter(0, 1l);
		//3> 根据查询对象获得查询结果
		Customer c = (Customer) query.uniqueResult();
		
		System.out.println(c);
		//-------------------------------------------
		//4提交事务.关闭资源
		tx.commit();
		session.close();// 游离|托管 状态, 有id , 没有关联
		
		
	}
	
	@Test
	//条件查询
	//命名占位符
	public void fun4(){
		//1 获得session
		Session session = HibernateUtils.openSession();
		//2 控制事务
		Transaction tx = session.beginTransaction();
		//3执行操作
		//-------------------------------------------
		//1> 书写HQL语句
		String hql = " from Customer where cust_id = :cust_id "; // 查询所有Customer对象
		//2> 根据HQL语句创建查询对象
		Query query = session.createQuery(hql);
		//设置参数
		query.setParameter("cust_id", 1l);
		//3> 根据查询对象获得查询结果
		Customer c = (Customer) query.uniqueResult();
		
		System.out.println(c);
		//-------------------------------------------
		//4提交事务.关闭资源
		tx.commit();
		session.close();// 游离|托管 状态, 有id , 没有关联
		
		
	}
	
	@Test
	//分页查询
	public void fun5(){
		//1 获得session
		Session session = HibernateUtils.openSession();
		//2 控制事务
		Transaction tx = session.beginTransaction();
		//3执行操作
		//-------------------------------------------
		//1> 书写HQL语句
		String hql = " from Customer  "; // 查询所有Customer对象
		//2> 根据HQL语句创建查询对象
		Query query = session.createQuery(hql);
		//设置分页信息 limit ?,?
		query.setFirstResult(1);
		query.setMaxResults(1);
		//3> 根据查询对象获得查询结果
		List
  
    list = query.list(); System.out.println(list); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } }
  
 
criteria查询
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

import cn.itheima.domain.Customer;
import cn.itheima.utils.HibernateUtils;

//测试Criteria查询
public class Demo {

	@Test
	//基本查询
	public void fun1(){
		//1 获得session
		Session session = HibernateUtils.openSession();
		//2 控制事务
		Transaction tx = session.beginTransaction();
		//3执行操作
		//-------------------------------------------
		
		//查询所有的Customer对象
		Criteria criteria = session.createCriteria(Customer.class);
		
		List
 
   list = criteria.list();
		
		System.out.println(list);
		
//		Customer c = (Customer) criteria.uniqueResult();
		
		//-------------------------------------------
		//4提交事务.关闭资源
		tx.commit();
		session.close();// 游离|托管 状态, 有id , 没有关联
		
		
	}
	
	@Test
	//条件查询
	//HQL语句中,不可能出现任何数据库相关的信息的
	// > 				gt
	// >=				ge
	// <				lt
	// <=				le
	// ==				eq
	// !=				ne
	// in				in
	// between and		between
	// like 			like
	// is not null 		isNotNull
	// is null			isNull
	// or				or
	// and				and
	public void fun2(){
		//1 获得session
		Session session = HibernateUtils.openSession();
		//2 控制事务
		Transaction tx = session.beginTransaction();
		//3执行操作
		//-------------------------------------------
		//创建criteria查询对象
		Criteria criteria = session.createCriteria(Customer.class);
		//添加查询参数 => 查询cust_id为1的Customer对象
		criteria.add(Restrictions.eq("cust_id", 1l));
		//执行查询获得结果
		Customer c = (Customer) criteria.uniqueResult();
		System.out.println(c);
		//-------------------------------------------
		//4提交事务.关闭资源
		tx.commit();
		session.close();// 游离|托管 状态, 有id , 没有关联
		
		
	}
	
	
	
	@Test
	//分页查询
	public void fun3(){
		//1 获得session
		Session session = HibernateUtils.openSession();
		//2 控制事务
		Transaction tx = session.beginTransaction();
		//3执行操作
		//-------------------------------------------
		//创建criteria查询对象
		Criteria criteria = session.createCriteria(Customer.class);
		//设置分页信息 limit ?,?
		criteria.setFirstResult(1);
		criteria.setMaxResults(2);
		//执行查询
		List
  
    list = criteria.list(); System.out.println(list); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } @Test //查询总记录数 public void fun4(){ //1 获得session Session session = HibernateUtils.openSession(); //2 控制事务 Transaction tx = session.beginTransaction(); //3执行操作 //------------------------------------------- //创建criteria查询对象 Criteria criteria = session.createCriteria(Customer.class); //设置查询的聚合函数 => 总行数 criteria.setProjection(Projections.rowCount()); //执行查询 Long count = (Long) criteria.uniqueResult(); System.out.println(count); //------------------------------------------- //4提交事务.关闭资源 tx.commit(); session.close();// 游离|托管 状态, 有id , 没有关联 } }
  
 
网友评论