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. Eclipse如何从SVN更新和上传修改部分项目

    1:右击项目,选择team菜单,点击与资源库同步 2:第一个箭头表示别人改动的部分 3:右击,更新,将同事改动的部分同步到自己的项目里面 4:第二个指向右边的箭头表示自己修改的文件 5:右击,提交,将 ...

  2. [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''&lt;h1 style=&quot;text-align: center;&quot;&gt;php

    [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL s ...

  3. 双向链表(自己写的c++类)

    UVA还是上不去T T哭瞎了. 只好老老实实的研究上回买的书了. 写得有点长.好吧,我只是来复习C++类的. 特意用class 而不用struct写链表. 数据结构还没学...双向链表就当先预习了. ...

  4. PythonOOP面向对象编程3

    override 函数重写 重写是在自定义的类内添加相应的方法,让自定义的类生成的对象(实例)像内建对象一样进行内建的函数操作 对象转字符串函数重写 repr(obj) 返回一个能代表此对象的表达式字 ...

  5. 第一个hello word 驱动载入失败--------

    今天尝试自己载入第一个驱动模块,依据惯例hello word 然后失败了,如今说明我的操作过程.请个位看看. 首先我的内核版本号: 模块代码与MAKEFILE #include<linux/in ...

  6. Android, IOS 史上最强多语言国际化,不仅第一次会尾随系统,并且会保存用户的语言设置

    劲爆消息,我提供源代码了.你能够先看完再下载.也能够先下载再看完, android源代码地址: https://github.com/hebiao6446/------Bluetooth-Androi ...

  7. HDU 2844 Coins (多重背包计数 空间换时间)

    Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  8. 使用四种框架分别实现百万websocket常连接的服务器--转

    原文地址:http://colobu.com/2015/05/22/implement-C1000K-servers-by-spray-netty-undertow-and-node-js/#Nett ...

  9. Altium Designer敷铜的规则设定

    InPolygon 这个词是铺铜对其他网络的设置,铺铜要离其他网络远点,因为腐蚀不干净会对 电路板有影响... 问题一:: 如下图所示,现在想让敷铜与板子边界也就是keepoutlayer的间距小一点 ...

  10. JVM学习:方法重载的优先级

    重载:方法名一致,参数长度或者类型不一致. 先放总结,下面为例子 参数具有继承.实现关系,优先考虑子类: 在不考虑对基本类型自动装拆箱(auto-boxing,auto-unboxing),以及可变长 ...