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);
} }

  

Hibernate的数据操作(4.*以上版本)的更多相关文章

  1. 第八章 Hibernate数据操作技巧

    第八章   Hibernate数据操作技巧8.1 分组统计数据    语法:[select]... from ...[where] [group by...[having...]] [order by ...

  2. Hibernate入门(4)- Hibernate数据操作

    Hibernate加载数据 Session.get(Class clazz, Serializable id) clazz:需要加载对象的类,例如:User.class id:查询条件(实现了序列化接 ...

  3. Hibernate的数据查找,添加!

    1.首先看一下测试数据库的物理模型 2.测试所需要的Hibernate的jar包 3.数据库的sql /*=============================================== ...

  4. 5 -- Hibernate的基本用法 --2 2 Hibernate的数据库操作

    在所有的ORM框架中有一个非常重要的媒介 : PO(持久化对象:Persistent Object).持久化对象的作用是完成持久化操作,简单地说,通过该对象可对数据执行增.删.改的操作 ------ ...

  5. Hibernate 系列 03 - 使用Hibernate完成持久化操作

    引导目录: Hibernate 系列教程 目录 康姆昂,北鼻,来此狗.动次打次,Hibernate继续走起. 目录: 使用Hibernate实现按主键查询 使用Hibernate实现数据库的增.删.改 ...

  6. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

  7. SQL不同服务器数据库之间的数据操作整理(完整版)

    ---------------------------------------------------------------------------------- -- Author : htl25 ...

  8. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作

    http://www.cnblogs.com/wgp13x/p/4934521.html 内容一样,样式好的版本. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据 ...

  9. MySQL表的创建和表中数据操作

    这篇文章主要介绍在navicat的命令界面操作mysql.主要涉及建立表结构,和对表中数据的增加删除修改查询等动作.站在一个新手角度的简单mysql表结构和数据操作. ☆ 准备工作 1,保证自己的电脑 ...

随机推荐

  1. TC Hangs when using quick search extended on win10 (1703)

    https://ghisler.ch/board/viewtopic.php?t=47682 I recently updated windows 10 to the latest released ...

  2. JS概述

             从Asp.NET跨越到JavaScript.这既是一个新的领域也是一个非常熟悉的地方,新是由于不知道什么是JavaScript,首先来了解一下什么是JavaScript.       ...

  3. Codeforces Round #367 (Div. 2) (A,B,C,D,E)

    Codeforces Round 367 Div. 2 点击打开链接 A. Beru-taxi (1s, 256MB) 题目大意:在平面上 \(n\) 个点 \((x_i,y_i)\) 上有出租车,每 ...

  4. Altium Designer中DRC错误分析

  5. FZU《C语言程序综合设计》

    一年前的玩意. 老是有人找我要..一年前写得这么搓都不敢拿出来.... 但是好多人要啊.....直接发blog,省得下次还要发压缩文件.. 就不要吐槽我代码烂了,我也觉得很烂,至少现在看来确实很烂.. ...

  6. 最短路算法详解(Dijkstra/SPFA/Floyd)

    新的整理版本版的地址见我新博客 http://www.hrwhisper.me/?p=1952 一.Dijkstra Dijkstra单源最短路算法,即计算从起点出发到每个点的最短路.所以Dijkst ...

  7. 【例题 4-1 UVA - 1339】 Ancient Cipher

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 位置其实都没关系了. 只要每个字母都有对应的字母,它们的数量相同就可以了. 求出每种字母的数量. 排序之后. 肯定是要一一对应的. ...

  8. C++开源码项目汇总

    Google的C++开源码项目 v8  -  V8 JavaScript Engine V8 是 Google 的开源 JavaScript 引擎. V8 採用 C++ 编写,可在谷歌浏览器(来自 G ...

  9. 利用Attribute实现Aop

    Aop“面向切面编程”,与OOP“面向对象编程”一样是一种编程思路.个人理解:在不改变原有逻辑的基础上,注入其他行为. 基础代码(仿MVC拦截器实现) namespace HGL.Toolkit.Ao ...

  10. 从零开始使用git第一篇:下载安装配置

    从零开始使用git 第一篇:下载安装配置 第一篇:从零开始使用git第一篇:下载安装配置 第二篇:从零开始使用git第二篇:git实践操作 第三篇:从零开始使用git第三篇:git撤销操作.分支操作和 ...