您的位置:首页 > 其它

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

2016-01-23 11:22 309 查看
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);
}

}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: