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);
}
}
Hibernate的数据操作(4.*以上版本)的更多相关文章
- 第八章 Hibernate数据操作技巧
第八章 Hibernate数据操作技巧8.1 分组统计数据 语法:[select]... from ...[where] [group by...[having...]] [order by ...
- Hibernate入门(4)- Hibernate数据操作
Hibernate加载数据 Session.get(Class clazz, Serializable id) clazz:需要加载对象的类,例如:User.class id:查询条件(实现了序列化接 ...
- Hibernate的数据查找,添加!
1.首先看一下测试数据库的物理模型 2.测试所需要的Hibernate的jar包 3.数据库的sql /*=============================================== ...
- 5 -- Hibernate的基本用法 --2 2 Hibernate的数据库操作
在所有的ORM框架中有一个非常重要的媒介 : PO(持久化对象:Persistent Object).持久化对象的作用是完成持久化操作,简单地说,通过该对象可对数据执行增.删.改的操作 ------ ...
- Hibernate 系列 03 - 使用Hibernate完成持久化操作
引导目录: Hibernate 系列教程 目录 康姆昂,北鼻,来此狗.动次打次,Hibernate继续走起. 目录: 使用Hibernate实现按主键查询 使用Hibernate实现数据库的增.删.改 ...
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
- SQL不同服务器数据库之间的数据操作整理(完整版)
---------------------------------------------------------------------------------- -- Author : htl25 ...
- 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作
http://www.cnblogs.com/wgp13x/p/4934521.html 内容一样,样式好的版本. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据 ...
- MySQL表的创建和表中数据操作
这篇文章主要介绍在navicat的命令界面操作mysql.主要涉及建立表结构,和对表中数据的增加删除修改查询等动作.站在一个新手角度的简单mysql表结构和数据操作. ☆ 准备工作 1,保证自己的电脑 ...
随机推荐
- bootstrap课程9 bootstrap如何实现动画加载进度条的效果
bootstrap课程9 bootstrap如何实现动画加载进度条的效果 一.总结 一句话总结:在bootstrap进度条的基础上添加js(定时器),动态的改变进度条即可.很简单的. 1.路径导航是什 ...
- 如何从mysql数据库中取到随机的记录
如何从mysql数据库中取到随机的记录 一.总结 一句话总结:用随机函数newID(),select top N * from table_name order by newid() ----N是一个 ...
- Centos7安装.Net Core 2.2环境以及部署.Net Core MVC程序(Apache+Jexus环境)
原文:Centos7安装.Net Core 2.2环境以及部署.Net Core MVC程序(Apache+Jexus环境) 1.双11抢购***VPS.配置如下: CPU:2 核 内存:2048 M ...
- Android实践 -- 设置系统日期时间和时区
设置系统日期时间和时区 设置系统的日期时间和时区,需要 系统权限和系统签名,android:sharedUserId="android.uid.system" 需要在manifes ...
- IOS获取手机设备所有应用
//返回一个数组 1 NSMutableArray *applist = [[NSMutableArray alloc]init]; NSString *pathOfApplications = @& ...
- android 登录和设置IP/端口功能
本人第一个Android开发功能:登录以及设置IP/端口. 本人是j2ee开发工程师,所以这个可能有一些处理不太完善的地方,欢迎评论在下面,我会认真改进的. 首先是配置strings.xml文件添加用 ...
- Android javaMail使用imap协议接收邮件
在这里说明一下,pop3和imap协议都是接收邮件的,但是他们还是有很多不同的. IMAP和POP有什么区别? POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件. ...
- 文本超出显示省略号CSS
单行超出显示省略号 display: block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; 多行超出显示省略号 1.普 ...
- Mac 环境下svn服务器的配置
Mac 环境下svn服务器的配置 本文目录 • 一.创建代码仓库,用来存储客户端所上传的代码 • 二.配置svn的用户权限 • 三.使用svn客户端功能 在Windows环境中,我们一般使用Torto ...
- 【BZOJ 3998】弦论
[链接]h在这里写链接 [题意] 给你一个长度为n的子串; 让你求出第k小的子串是什么; 输出答案的类型分两种; 第一种,重复的算两次,第二种,重复的算一次. ...