• Hibernate的数据操作(4.*以上版本)


    Hibernate的基本数据操作 适用于4.* 。。sessionFactory的创建区别

    public class NewsTest {
    	private Session session = null;
    	private SessionFactory sf = null;
    	private Transaction ts = null;
    	
    	@Before
    	public void init() {
    		Configuration config = new Configuration();
    		config.configure();
    		ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
    		sf = config.buildSessionFactory(sr);
    		session = sf.openSession();
    		ts = session.beginTransaction();
    
    	}
    
    	@After
    	public void destroy() {
    		ts.commit();
    		session.close();
    		sf.close();
    	}
    
    	@Test
    	public void testGet() {
    		News news = (News) session.get(News.class, 21);
    		System.out.println(news);
    
    	}
    	@Test
    	public void testSave(){
    		News news = new News();
    		news.setId(10);
    		news.setContent("撒");
    		news.setTitle("标题");
    		news.setCreateDate(new Date());
    		session.save(news);
    	}
    	@Test
    	public void testHQL(){
    //		String sql = "select new News(n.id, n.title) from News n order by n.id desc";
    		String sql = "select  n.id, n.title from News n order by n.id desc";
    		Query query = session.createQuery(sql);
    		//query.setString("order", "'desc'");
    		//query.setInteger(0, 43);
    //		query.setParameter(1, 42);//org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 2
    		
    //		Criteria criteria = session.createCriteria(News.class);
    //		criteria.add(Restrictions.eq("id", 1));
    		
    //		SQLQuery sqlQuery = session.createSQLQuery(queryString);
    //		sqlQuery.addEntity(News.class);
    		
    		List<News> list = query.list();
    		System.out.println(list);
    		
    //		List<Object[]> list = query.list();
    //		for(Object[] news:list){
    //			for(Object o : news){
    //				System.out.println(o);
    //			}
    //		}
    	}
    	
    	@Test
    	public void testQueryPage(){
    		//分页查询
    		String sql = "from News ";
    		Query query = session.createQuery(sql);
    		int page = 2;
    		int rows = 2;
    		query.setFirstResult((page-1)*rows);//起始行
    		query.setMaxResults(rows);//最大行数
    		List<News> list = query.list();
    		System.out.println(list);
    	}
    	@Test
    	public void testManyToOne(){
    		//数据操作
    		Factory factory1 = new Factory("三星2");
    		Factory factory2 = new Factory("谷歌");
    		Product product1 = new Product("note3",1230,factory1);
    		Product product2 = new Product("galaxy",2300,factory1);
    		Product product3 = new Product("glass",1340,factory2);
    		
    		//如果工厂与产品保存顺序相反,则结束之后执行update操作
    		session.save(factory1);
    		session.save(factory2);
    		session.save(product1);
    		session.save(product2);
    		session.save(product3);
    	}
    	
    	@Test
    	public void testGetManyToOne(){
    		//多对一的关联操作
    		Product product = (Product)session.get(Product.class, 4);
    		System.out.println("Product name : "+product.getName());
    		//懒加载,用到才查询
    		System.out.println("Factory Name : "+product.getFactory().getName());
    	}
    	@Test
    	public void testGetOneToMany(){
    		//一对多的关联操作
    		Factory factory = (Factory)session.get(Factory.class, 2);
    		System.out.println("Product name : "+factory.getName());
    		System.out.println("Product count : "+factory.getProducts().size());
    	}
    	@Test
    	public void testDeleteOneToManyCascade(){
    		Factory factory = (Factory)session.get(Factory.class, 6);
    		session.delete(factory);
    	}
    
    }
    

      

  • 相关阅读:
    JAVA内部类详解
    表、栈和队列
    大型网站架构演化<二>
    eclipse中build path 中JDK与java compiler compliance level的问题(转)
    XFire构建服务端Service的两种方式
    SpringMVC简单例子
    Mybatis
    java静态代码块 类加载顺序问题。
    Tomcat6.0数据源配置
    解析xml的几种方式
  • 原文地址:https://www.cnblogs.com/whytohow/p/5152997.html
Copyright © 2020-2023  润新知