一、生成单例SessionFactory的Util类
package com.HIB.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static SessionFactory sf;
static{
Configuration conf = new Configuration().configure();
sf = conf.buildSessionFactory();
}
public static Session openSession(){
Session session = sf.openSession();
return session;
}
public static Session getCurrentSession(){
Session session = sf.getCurrentSession();
return session;
}
public static void main(String[] args) {
System.out.println(HibernateUtils.openSession());
}
}
二、具体的xml配置
package com.HIB.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static SessionFactory sf;
static{
Configuration conf = new Configuration().configure();
sf = conf.buildSessionFactory();
}
public static Session openSession(){
Session session = sf.openSession();
return session;
}
public static Session getCurrentSession(){
Session session = sf.getCurrentSession();
return session;
}
public static void main(String[] args) {
System.out.println(HibernateUtils.openSession());
}
}
三、数据库表
四、各种测试(包括HQL和QBC)
package com.HIB.test;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import com.HIB.dao.QueryDao;
import com.HIB.dao.SaveDao;
import com.HIB.utils.HibernateUtils;
import com.HIB.vo.Customer;
import com.HIB.vo.LinkMan;
import com.HIB.vo.Message;
import com.HIB.vo.Reply;
import com.HIB.vo.Role;
import com.HIB.vo.User;
import com.sun.mail.smtp.DigestMD5;
public class Text {
@Test
//一对多
public void fun1(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Customer c = new Customer();
c.setCust_name("yaya");
LinkMan lm1 = new LinkMan();
lm1.setLkm_name("黎明");
LinkMan lm2 = new LinkMan();
lm2.setLkm_name("刘东");
c.getLinkMens().add(lm1);
c.getLinkMens().add(lm2);
session.save(c);
tx.commit();
session.close();
}
@Test
//多对多
public void fun2(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Role r = new Role();
r.setRole_name("角色4");
User u = new User();
u.getRoles().add(r);
r.getUsers().add(u);
session.save(u);
tx.commit();
session.close();
}
@Test
public void fun3(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Customer c = session.get(Customer.class,1l);
LinkMan lm = session.get(LinkMan.class, 3l);
c.getLinkMens().remove(lm);
lm.setCustomer(null);
tx.commit();
session.close();
}
@Test
public void fun4(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Customer c = new Customer();
c.setCust_name("张三");
session.save(c);
tx.commit();
session.close();
}
@Test
public void fun5(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Message m = session.get(Message.class, 1);
System.out.println(m.getReplycontents().size());
tx.commit();
session.close();
}
@Test
public void fun6(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from Customer order by cust_id desc");
List list = query.list();
System.out.println(list);
tx.commit();
session.close();
}
@Test
public void fun7(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from Customer");
query.setFirstResult(0);
query.setMaxResults(2);
List list = query.list();
System.out.println(list);
tx.commit();
session.close();
}
@Test
public void fun8(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
String sql1 = "select count(*) from Customer";
String sql2 = "select sum(cust_id) from Customer";
Query query = session.createQuery(sql2);
Number number = (Number) query.uniqueResult();
System.out.println(number);
tx.commit();
session.close();
}
@Test
public void fun9(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from Customer order by cust_id desc");
List list = query.list();
System.out.println(list);
tx.commit();
session.close();
}
@Test
public void fun10(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
List<Customer> list = criteria.list();
System.out.println(list);
tx.commit();
session.close();
}
@Test
//QBC条件
public void fun11(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
criteria.add(Restrictions.idEq(1l));
List<Customer> list = criteria.list();
System.out.println(list);
tx.commit();
session.close();
}
@Test
public void fun12(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
criteria.setFirstResult(0);
criteria.setMaxResults(3);
List<Customer> list = criteria.list();
System.out.println(list);
tx.commit();
session.close();
}
@Test
//QBC排序
public void fun13(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
criteria.addOrder(Order.desc("cust_id"));
List<Customer> list = criteria.list();
System.out.println(list);
tx.commit();
session.close();
}
@Test
//统计
public void fun14(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Customer.class);
criteria.setProjection(Projections.rowCount());
List<Customer> list = criteria.list();
System.out.println(list);
tx.commit();
session.close();
}
@Test
public void fun15(){
QueryDao dao = new QueryDao();
Customer c = new Customer();
dao.queryResultByColumnDesc(c, "cust_id");
}
@Test
public void fun16(){
SaveDao dao = new SaveDao();
Customer c = new Customer();
c.setCust_name("哈哈");
LinkMan l1 = new LinkMan();
LinkMan l2 = new LinkMan();
l1.setLkm_name("嘿嘿");
l2.setLkm_name("拜拜");
c.getLinkMens().add(l2);
c.getLinkMens().add(l1);
l1.setCustomer(c);
l2.setCustomer(c);
dao.savepojo(c);
}
}