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

}

  

时间: 2024-08-11 05:06:25

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

关于hibernate的数据库操作

最近完成系统后台管理,大家都知道后台管理莫过于增删改查的一些工作了,那么这就要hibernate的数据操作了. 下面是具体操作 查 String hql=”from User”; List<User>userList=this.getHibernateTemplate().find(hql); 当然,上面是查找全部.Hibernate一样可以条件查询. String hql=”from User where userId=?”; List<User> userList=this.g

一、javaSE (二十二)登录注册IO版本案例、数据操作流、内存操作流、打印流、标准输入输出流、随机访问流、合并流、序列化流、Properties、NIO

1:登录注册Io版本案例(掌握) 要求,对着写一遍 cn.itcast.pojo User cn.itcast.dao UserDao cn.itcast.dao.impl UserDaoImp1(实现我不管) cn.itcast.game GuessNumber cn.itcast.test UserTest 2:数据操作流(操作基本类型数据的流)(理解) (1)可以操作基本类型的数据 (2)流对象名称 DataInputStream DataOutputStream 3:内存操作流(理解)

Hibernate的数据查找,添加!

1.首先看一下测试数据库的物理模型 2.测试所需要的Hibernate的jar包 3.数据库的sql /*==============================================================*/ /* DBMS name: MySQL 5.0 */ /* Created on: 2015/7/3 23:17:57 */ /*==============================================================*/ dr

Hibernate ORM框架——第一章:Hibernate简介与操作基础

一.相关使用工具的下载与导入(环境配置) hibernate-release-4.2.21.Final-->旧版本hibernate-release-5.2.10.Final-->新版本 首先需要解压:hibernate-release-5.2.10.Final(新版本)-->把解压后的 hibernate-release-5.2.10.Final文件夹里的 lib文件夹里的所有jar包复制到根项目下的lib文件夹里,包括JDBC的ojdbc6.jar包-->把所有的jar包变成牛

Cocos数据篇[3.4](3) ——XML数据操作

[唠叨] XML 即 可扩展标记语言,在游戏开发中,常用于保存游戏数据信息,如最高分.游戏等级等信息,和描述一些资源等. 加载动画的plist文件.瓦片地图编辑器到处的地图格式tmx文件,实际上都是特定格式的xml文件. 另外 UserDefault 单例类保存的数据,也是存储在xml文件中的. Cocos2d-x 已经加入了 tinyxml2库 用于xml的解析.3.x版本位于external/tinyxml2下. 本节要介绍的就是:如何使用 tinyxml2库 来操作处理xml文件. [参考

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

这篇文章主要介绍在navicat的命令界面操作mysql.主要涉及建立表结构,和对表中数据的增加删除修改查询等动作.站在一个新手角度的简单mysql表结构和数据操作. ☆ 准备工作 1,保证自己的电脑安装了mysql(my.ini下的字符集设置是utf8) 2,确保电脑同时安装navicat(任意版本) 3,保证mysql服务器已经启动 注:若对navicat操作不熟,请参照<<navicat从下载到使用>>这篇文章. ☆ 打开控制台 在navicat的tools(工具)菜单栏选择

Hibernate表单操作

1.单一主键 assigned(由java程序生成标识符) native(由数据库自动生成标识符,例如MySQL就是increment.Oracle就是sequence) 2.基本类型 hibernate映射类型 java类型 sql类型 大小 integer/int  java.lang.Integer/int INTEGER  4 btye long  java.lang.Long BIGENT 8 short java.lang.Short  SMALLINT 2 float java.l

018_异地数据操作

--[分布式查询]异地数据库的异种数据操作 /* 一.分布式查询定义: MSSQlServer所谓的分布式查询(Distributed Query)是能够访问存放在同一部计算机或不同计算机上的SQL Server或不同种类的数据源, 需要根据数据源的类别来使用相对应的接口.从而实现在服务器跨域或跨服务器访问. 二.执行机制: client(客户端)向服务器请求数据,此时先检查 memcache server(缓冲服务器)(本地)是否有此数据,没有的话就会根据相关数据源的接口调用异地数据,然后更新

如何从ToughRADIUS V1版本迁移数据到 ToughRADIUS V2版本

由于 ToughRADIUS V2版本 是一次打破兼容性的重构,数据结构并不完全兼容,因此对V1版本的数据迁移到V2版本,我们加入了特殊的数据转换支持. 迁移步骤 登陆 ToughRADIUS V1版本的系统管理控制台,进入到数据备份管理界面,执行数据备份,然后下载最新的备份文件. 修改下载的备份文件,在文件名中加入trv1四个字符,比如改名后变成 trv1_toughradius-xxxxx.gz这样的名称. 进入ToughRADIUS V2版本的管理控制台,进入数据备份管理功能界面,上传改了