博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate 单例模式、 Query查询以及事务的应用
阅读量:3526 次
发布时间:2019-05-20

本文共 2570 字,大约阅读时间需要 8 分钟。

 

hql 是hibernate查询语言 hibernate query language 是一种接近sql的查询语言。

hql查询 不会出现表名字,表的字段名,只会是类名和类的属性名。

1.新建java文件,生成唯一的SessionFactory:

public class HibernateUtil {	private static SessionFactory sf = null;	private static Configuration cfg = null;	static {		try {			cfg = new Configuration().configure();			sf = cfg.buildSessionFactory();		} catch (HibernateException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}	public static SessionFactory getSessionFactory() {		return sf;	}	public static void closeSessionFactory(){		sf.close();	}

2.Hibernate3之后推荐用getCurruntSession来打开session,来保证线程安全。

(使用getCurrentSession需要在hibernate.cfg.xml配置文件中加入 

<property name="hibernate.current_session_context_class">      thread     </property>,保证每个读写线程有唯一的session实例 。)

org.hibernate.dialect.MySQLInnoDBDialect
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/firstorm?useSSL=false
root
root
true
thread

事务:

try {            sf = HibernateUtil.getSessionFactory();            session = sf.getCurrentSession();            ts = session.beginTransaction();            session.save(u);            //ts.commit();    }

Query的查询 :

1.保存用户对象:

//保存	public void testSaveUser() {		Configuration cfg = null;		SessionFactory sf = null;		Session session = null;		Transaction ts = null;		User u = new User();		u.setName("于佳欣");		u.setGender("女");		u.setAge(21);		u.setBirthday(Date.valueOf("2000-01-01"));		try {						sf = HibernateUtil.getSessionFactory();			session = sf.getCurrentSession();			ts = session.beginTransaction();			session.save(u);			ts.commit();		} catch (HibernateException e) {			// TODO Auto-generated catch block			e.printStackTrace();			if(ts != null) {				ts.rollback();			}		}finally {			session.close();			sf.close();		}	}

2.查询用户对象:

//查询	public void testQueryUser() {		Configuration cfg = null;		SessionFactory sf = null;		Session session = null;		Transaction ts = null;				try {						sf = HibernateUtil.getSessionFactory();			session = sf.getCurrentSession();			ts = session.beginTransaction();			Query query = session.createQuery("from User");			List
users = query.List(); for(int i = 0; i < users.size(); i++) { User u = users.get(i); System.out.printIn(u.getName() + " " + u.getAge()); } ts.commit(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); if(ts != null) { ts.rollback(); } }finally { session.close(); sf.close(); } }

 结果:

转载地址:http://dauhj.baihongyu.com/

你可能感兴趣的文章
Vue学习笔记——常见简写&修饰符
查看>>
vue-element-admin源码解读——项目启动过程
查看>>
zcmu 1577 食堂的蛋饼(思维)
查看>>
zcmu 1796 wjw的数学题 (唯一分解定理+排列组合)
查看>>
hdu 4135 Co-prime(分解质因数+容斥定理)
查看>>
hdu 4407 Sum(分解质因数+容斥定理)
查看>>
HihoCoder - 1631 Cats and Fish(思维)
查看>>
HihoCoder - 1632 Secret Poems(规律题)
查看>>
zcmu 1900: Problem D: Dominos(单向并查集)
查看>>
zcmu 1059: 田忌赛马(贪心)
查看>>
zcmu 4944: 字符串处理
查看>>
浙江中医药大学2018级新生程序设计竞赛题解
查看>>
zcmu-新生宝贝们的第四次试水题解
查看>>
线段树详解(单点修改+区间修改和查询)
查看>>
线段树 单点修改+区间修改和查询 例题+代码
查看>>
zcmu-新生宝贝们的第五次试水题解
查看>>
fjut 1862 奇怪数列(判断一个数是否为2的整次方)
查看>>
C++ STL 之 set 与 multiset 的基本用法
查看>>
Powers of two(multiset的运用)
查看>>
并查集入门(普通并查集+带删除并查集+关系并查集)
查看>>