1、 在mysql中創建數據庫test,創建表t_user (id[自動增長],name,sex)
2、 在eclipse中配置database explore
3、 打開database explore,建立連接
4、 創建java工程(注意將hibernate、Junit、mysql jdbc驅動程序都添加上,如下圖)
5、 爲工程添加hibernate支持
注意這裏如果選中add hibernate2.1 libraries to project? 則前面創建工程時可以不添加hibernate類庫
6、 回到database explore,創建hibernate映射
7、 查看工程
在hibernate.cfg.xml文件中加入
<property name="hibernate.show_sql">True</property>
<property name="hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JDBCTransactionFactory
</property>
8、 建立測試文件HibernateTest.java
package com.tc.test;
import java.util.List;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
import junit.framework.Assert;
import junit.framework.TestCase;
public class HibernateTest extends TestCase {
Session session = null;
protected void setUp() {
try {
session=HibernateSessionFactory.currentSession();
} catch (HibernateException e) {
e.printStackTrace();
}
}
protected void tearDown() {
try {
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}
public void testInsert() {
try {
TUser user = new TUser();
user.setName("Emma2");
user.setSex(new Integer(0));
session.save(user);
session.flush();
} catch (HibernateException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
public void testSelect() {
String hql = " from TUser where name='Emma'";
try {
List userList = session.find(hql);
TUser user = (TUser) userList.get(0);
Assert.assertEquals(user.getName(), "Emma");
} catch (HibernateException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
}
9、 運行測試
10.數據檢索Criteria Query
具體的Criteria 查詢表達式語法請參考hibernate手冊或夏昕寫的hibernate開發指南,這裏描述的是: Criteria 高級特性 限定返回的記錄範圍
package com.tc;
import java.util.Iterator;
import java.util.List;
import net.sf.hibernate.Criteria;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.expression.Order;
public class TestCriteria {
/**
* @param args
* @throws HibernateException
*/
public static void main(String[] args) throws HibernateException {
// TODO Auto-generated method stub
Session session = null;
session=HibernateSessionFactory.currentSession();
Criteria criteria = session.createCriteria(TUser.class);
// 從5條結果開始的5條記錄
criteria.setFirstResult(5);
criteria.setMaxResults(5);
criteria.addOrder(Order.asc("id"));
List list=criteria.list();
System.out.println(list.size());
for (Iterator iter = list.iterator(); iter.hasNext();) {
TUser element = (TUser) iter.next();
System.out.println(element.getName());
}
}
}
11、 數據檢索HQL
相對Criteria,HQL提供了更接近傳統SQL語句的查詢語法。
package com.tc.test;
import java.util.List;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
public class TestHQL {
public static void main(String[] args) throws HibernateException {
Session session = null;
session=HibernateSessionFactory.currentSession();
//String hql = "from com.tc.test.TUser";
String hql =
"from com.tc.test.TUser as user where user.name='kk'";
Query query = session.createQuery(hql);
List userList = query.list();
System.out.println(userList.size());
}
}