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); } }
时间: 2024-10-21 04:49:07