Hibernate4的一些总结

http://1194867672-qq-com.iteye.com/blog/1522906

publicclass TestHql { 

/** 查询全部 (推荐) */

    @Test

publicvoid test_list() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "from Emp"

Query query = session.createQuery(hql); 

query.setCacheable(true); // 设置缓存

List<Emp> list = query.list(); 

show(list); 

session.close(); 

/** 查询全部 */

@Test

publicvoid test_iterator() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "from Emp"

Query query = session.createQuery(hql); 

Iterator<Emp> it = query.iterate(); 

while (it.hasNext()) { 

Emp emp = it.next(); 

System.out.println(emp); 

session.close(); 

/** 分页查询 */

// select * from

// ( select e.*, rownum rn from ( select * from emp ) e where rownum <= 10 )

// where rn > 1

@Test

publicvoid test_pagination() { 

int pageNo = 1// 当前页数

int pageSize = 5// 每页显示条数

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "from Emp"

Query query = session.createQuery(hql); 

query.setFirstResult((pageNo - 1) * pageSize); 

query.setMaxResults(pageSize); 

query.setCacheable(true); // 设置缓存

List<Emp> list = query.list(); 

show(list); 

session.close(); 

/** 查询结果是唯一值 */

@Test

publicvoid test_uniqueResult() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "from Emp where empno=7369"

Query query = session.createQuery(hql); 

Emp emp = (Emp) query.uniqueResult(); 

System.out.println(emp); 

session.close(); 

/** 投影查询 */

@Test

publicvoid test_projection1() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "select empno from Emp"// 查询单值

Query query = session.createQuery(hql); 

List<Integer> list = query.list(); 

for (Integer empno : list) { 

System.out.println(empno); 

session.close(); 

/** 投影查询 */

@Test

publicvoid test_projection2() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "select empno,ename,hiredate,sal from Emp"// 查询多值

Query query = session.createQuery(hql); 

List<Object[]> list = query.list(); 

for (Object[] arr : list) { 

System.out.println(arr[0] + "\t" + arr[1] + "\t" + arr[2] + "\t" + arr[3]); 

session.close(); 

/** 投影查询 */

@Test

publicvoid test_projection3() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "select new Emp(empno,ename,hiredate,sal) from Emp"// 查询多值 封装在一个对象中

Query query = session.createQuery(hql); 

List<Emp> list = query.list(); 

for (Emp emp : list) { 

System.out.println(emp.getEmpno() + "\t" + emp.getEname() + "\t" + emp.getHiredate() + "\t" + emp.getSal()); 

session.close(); 

/** 投影查询 */

@Test

publicvoid test_projection4() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "select new Map(empno,ename,hiredate,sal) from Emp"// map 大小都都可以, 查询多值 装在一个Map中

Query query = session.createQuery(hql); 

List<Map> list = query.list(); 

for (Map map : list) { 

System.out.println(map.get("0") + "\t" + map.get("1") + "\t" + map.get("2") + "\t" + map.get("3")); 

session.close(); 

/** 投影查询 (使用别名) */

@Test

publicvoid test_projection5() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "select new Map(e.empno as empno ,e.ename as ename ,e.hiredate as hiredate ,e.sal as sal) from Emp as e"

Query query = session.createQuery(hql); 

List<Map> list = query.list(); 

for (Map map : list) { 

System.out.println(map.get("empno") + "\t" + map.get("ename") + "\t" + map.get("hiredate") + "\t" + map.ge("sal"));

}

session.close(); 

/** 去掉重复值 */

@Test

publicvoid test_distinct() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "select distinct job from Emp"

Query query = session.createQuery(hql); 

List<String> list = query.list(); 

for (String job : list) { 

System.out.println(job); 

session.close(); 

/** 条件查询 */

@Test

publicvoid test_where1() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

// String hql = "from Emp where empno=7369 and ename='SMITH'";

// String hql = "from Emp where empno=7369 or ename='ALLEN'";

// String hql = "from Emp where not (ename='SMITH')"; // () 可以不写

// String hql = "from Emp where sal between 3000 and 5000";

// String hql = "from Emp where sal not between 3000 and 5000";

// String hql = "from Emp where empno in(7369,7900,7654)";

// String hql = "from Emp where empno not in(7369,7900,7654)";

// String hql = "from Emp where ename like 'S%'";

// String hql = "from Emp where ename not like 'S%'";

// String hql="from Emp where comm is null";

// String hql="from Emp where comm is not null";

// String hql = "from Emp where sal >= 3000 and sal<= 5000)";

// String hql="from Emp where sal <>3000";

String hql = "from Emp where sal !=3000"

Query query = session.createQuery(hql); 

List<Emp> list = query.list(); 

show(list); 

session.close(); 

/** 条件查询 */

@Test

publicvoid test_where2() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "from Emp where ename like ?"

Query query = session.createQuery(hql); 

query.setString(0"J%"); 

// String hql = "from Emp where ename like :ename";

// Query query = session.createQuery(hql);

// query.setString("ename", "J%");

List<Emp> list = query.list(); 

show(list); 

session.close(); 

}

/** 统计函数 */

@Test

publicvoid test_statistics1() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "select count(*),min(sal),max(sal),avg(sal),sum(sal) from Emp"

Query query = session.createQuery(hql); 

Object[] values = (Object[]) query.uniqueResult(); 

System.out.println("总数:" + values[0]); 

System.out.println("最小值:" + values[1]); 

System.out.println("最大值:" + values[2]); 

System.out.println("平均值:" + values[3]); 

System.out.println("合计:" + values[4]); 

session.close(); 

/** 统计函数 */

@Test

publicvoid test_statistics2() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "select deptno,avg(sal) from Emp group by deptno having avg(sal)>2000 order by deptno"

Query query = session.createQuery(hql); 

List<Object[]> list = query.list(); 

for (Object[] arr : list) { 

System.out.println("部门编号:" + arr[0] + "\t" + "平均薪资:" + arr[1]); 

session.close(); 

/** 使用函数(和底层数据库有关) */

@Test

publicvoid test_function() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "select to_char(hiredate,'yyyy-mm-dd') from Emp"

Query query = session.createQuery(hql); 

List<String> list = query.list(); 

for (String ename : list) { 

System.out.println(ename); 

session.close(); 

/** 排序 */

@Test

publicvoid test_orderby() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

String hql = "from Emp order by job,sal desc"

Query query = session.createQuery(hql); 

List<Emp> list = query.list(); 

show(list); 

session.close(); 

// 遍历集合

privatevoid show(List<Emp> list) { 

for (Emp emp : list) { 

System.out.println(emp); 

publicclass TestQBC { 

/** 查询全部 */

@Test

publicvoid test_list() { 

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

Criteria criteria = session.createCriteria(Emp.class); 

criteria.setCacheable(true); // 设置缓存

List<Emp> list = criteria.list(); 

show(list); 

session.close(); 

/** 查询全部 */

@Test

publicvoid test_iterator() { 

// 没有iterator

/** 分页查询 */

// select * from

// ( select e.*, rownum rn from ( select * from emp ) e where rownum <= 10 )

// where rn > 1

@Test

publicvoid test_pagination() { 

int pageNo = 1// 当前页数

int pageSize = 5// 每页显示条数

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

Session session = sessionFactory.openSession(); 

Criteria criteria = session.createCriteria(Emp.class); 

  1. criteria.setFirstResult((pageNo - 1) * pageSize); 

  2. criteria.setMaxResults(pageSize); 

  3. criteria.setCacheable(true); // 设置缓存

  4. List<Emp> list = criteria.list(); 

  5. show(list); 

  6. session.close(); 

  7. /** 查询结果是唯一值 */

  8. @Test

  9. publicvoid test_uniqueResult() { 

  10. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

  11. Session session = sessionFactory.openSession(); 

  12. Criteria criteria = session.createCriteria(Emp.class); 

  13. criteria.add(Restrictions.eq("empno"7369)); 

  14. Emp emp = (Emp) criteria.uniqueResult(); 

  15. System.out.println(emp); 

  16. session.close(); 

  17. /** 投影查询 */

  18. @Test

  19. publicvoid test_projection1() { 

  20. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

  21. Session session = sessionFactory.openSession(); 

  22. Criteria criteria = session.createCriteria(Emp.class); 

  23. criteria.setProjection(Projections.property("empno")); 

  24. List<Integer> list = criteria.list(); 

  25. for (Integer empno : list) { 

  26. System.out.println(empno); 

  27. session.close(); 

  28. /** 投影查询 */

  29. @Test

  30. publicvoid test_projection2() { 

  31. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

  32. Session session = sessionFactory.openSession(); 

  33. Criteria criteria = session.createCriteria(Emp.class); 

  34. ProjectionList projectionList = Projections.projectionList(); 

  35. projectionList.add(Projections.property("empno")); 

  36. projectionList.add(Projections.property("ename")); 

  37. projectionList.add(Projections.property("hiredate")); 

  38. projectionList.add(Projections.property("sal")); 

  39. criteria.setProjection(projectionList); 

  40. List<Object[]> list = criteria.list(); 

  41. for (Object[] arr : list) { 

  42. System.out.println(arr[0] + "\t" + arr[1] + "\t" + arr[2] + "\t" + arr[3]); 

  43. session.close(); 

  44. /** 去掉重复值 */

  45. @Test

  46. publicvoid test_distinct() { 

  47. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

  48. Session session = sessionFactory.openSession(); 

  49. Criteria criteria = session.createCriteria(Emp.class); 

  50. criteria.setProjection(Projections.distinct(Projections.property("job"))); 

  51. List<String> list = criteria.list(); 

  52. for (String job : list) { 

  53. System.out.println(job); 

  54. session.close(); 

  55. /** 条件查询 */

  56. @Test

  57. publicvoid test_where() { 

  58. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

  59. Session session = sessionFactory.openSession(); 

  60. Criteria criteria = session.createCriteria(Emp.class); 

  61. // criteria.add(Restrictions.and(Restrictions.eq("empno", 7369), Restrictions.eq("ename", "SMITH")));

  62. // criteria.add(Restrictions.or(Restrictions.eq("empno", 7369), Restrictions.eq("ename", "ALLEN")));

  63. // criteria.add(Restrictions.not(Restrictions.eq("ename", "SMITH")));

  64. // criteria.add(Restrictions.between("sal", 3000.0, 5000.0));

  65. // criteria.add(Restrictions.not(Restrictions.between("sal", 3000.0, 5000.0)));

  66. // criteria.add(Restrictions.in("empno", new Object[] { 7369, 7900, 7654 }));

  67. // criteria.add(Restrictions.not(Restrictions.in("empno", new Object[] { 7369, 7900, 7654 })));

  68. // criteria.add(Restrictions.like("ename", "S%", MatchMode.START));

  69. // criteria.add(Restrictions.not(Restrictions.like("ename", "S%", MatchMode.START)));

  70. // criteria.add(Restrictions.isNull("comm"));

  71. // criteria.add(Restrictions.not(Restrictions.isNull("comm")));

  72. // criteria.add(Restrictions.and(Restrictions.ge("sal", 3000.0), Restrictions.le("sal", 5000.0)));

  73. criteria.add(Restrictions.ne("sal"3000.0)); 

  74. List<Emp> list = criteria.list(); 

  75. show(list); 

  76. session.close(); 

  77. /** 统计函数 */

  78. @Test

  79. publicvoid test_statistics1() { 

  80. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

  81. Session session = sessionFactory.openSession(); 

  82. Criteria criteria = session.createCriteria(Emp.class); 

  83. ProjectionList projectionList = Projections.projectionList(); 

  84. projectionList.add(Projections.rowCount()); 

  85. projectionList.add(Projections.min("sal")); 

  86. projectionList.add(Projections.max("sal")); 

  87. projectionList.add(Projections.avg("sal")); 

  88. projectionList.add(Projections.sum("sal")); 

  89. criteria.setProjection(projectionList); 

  90. Object[] values = (Object[]) criteria.uniqueResult(); 

  91. System.out.println("总数:" + values[0]); 

  92. System.out.println("最小值:" + values[1]); 

  93. System.out.println("最大值:" + values[2]); 

  94. System.out.println("平均值:" + values[3]); 

  95. System.out.println("合计:" + values[4]); 

  96. session.close(); 

  97. /** 统计函数 */

  98. // select deptno,avg(sal) from Emp group by deptno having avg(sal)>2000 order by deptno;

  99. @Test

  100. publicvoid test_statistics2() { 

  101. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

  102. Session session = sessionFactory.openSession(); 

  103. Criteria criteria = session.createCriteria(Emp.class); 

  104. ProjectionList projectionList = Projections.projectionList(); 

  105. projectionList.add(Projections.property("deptno")); 

  106. projectionList.add(Projections.avg("sal")); 

  107. projectionList.add(Projections.groupProperty("deptno")); 

  108. criteria.setProjection(projectionList); 

  109. // TODO having 怎么表示 暂时没有找到

  110. criteria.addOrder(Order.asc("deptno")); 

  111. List<Object[]> list = criteria.list(); 

  112. for (Object[] arr : list) { 

  113. System.out.println("部门编号:" + arr[0] + "\t" + "平均薪资:" + arr[1]); 

  114. session.close(); 

  115. /** 使用函数(和底层数据库有关) */

  116. @Test

  117. publicvoid test_function() { 

  118. // TODO

  119. /** 排序 */

  120. @Test

  121. publicvoid test_orderby() { 

  122. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

  123. Session session = sessionFactory.openSession(); 

  124. Criteria criteria = session.createCriteria(Emp.class); 

  125. criteria.addOrder(Order.asc("job")); 

  126. criteria.addOrder(Order.desc("sal")); 

  127. List<Emp> list = criteria.list(); 

  128. show(list); 

  129. session.close(); 

  130. // 遍历集合

  131. privatevoid show(List<Emp> list) { 

  132. for (Emp emp : list) { 

  133. System.out.println(emp); 

    1. publicclass TestQBE { 

    2. /** QBE查询 适合条件检索 */

    3. @Test

    4. publicvoid test_qbe() { 

    5. Emp emp = new Emp(); 

    6. emp.setDeptno(10); 

    7. emp.setJob("MANAGER"); 

    8. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    9. Session session = sessionFactory.openSession(); 

    10. Criteria criteria = session.createCriteria(Emp.class); 

    11. criteria.add(Example.create(emp));// 注意

    12. List<Emp> list = criteria.list(); 

    13. show(list); 

    14. session.close(); 

    15. // 遍历集合

    16. privatevoid show(List<Emp> list) { 

    17. for (Emp emp : list) { 

    18. System.out.println(emp); 

    1. publicclass TestSql { 

    2. /** 查询全部 */

    3. @Test

    4. publicvoid test_sql1() { 

    5. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    6. Session session = sessionFactory.openSession(); 

    7. String sql = "select * from emp"

    8. SQLQuery query = session.createSQLQuery(sql); 

    9. List<Object[]> list = query.list(); 

    10. for (Object[] arr : list) { 

    11. System.out.println(arr[0] + "\t" + arr[1] + "\t" + arr[2] + "\t" + arr[3] + "\t" + arr[4] + "\t" + arr[5] + "\t" + arr[6] + "\t" + arr[7]); 

    12. session.close(); 

    13. /** 查询全部 */

    14. @Test

    15. publicvoid test_sql2() { 

    16. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    17. Session session = sessionFactory.openSession(); 

    18. String sql = "select * from emp"

    19. SQLQuery query = session.createSQLQuery(sql); 

    20. query.addScalar("empno", StandardBasicTypes.INTEGER); 

    21. query.addScalar("ename", StandardBasicTypes.STRING); 

    22. query.addScalar("job", StandardBasicTypes.STRING); 

    23. query.addScalar("mgr", StandardBasicTypes.INTEGER); 

    24. query.addScalar("hiredate", StandardBasicTypes.DATE); 

    25. query.addScalar("sal", StandardBasicTypes.DOUBLE); 

    26. query.addScalar("comm", StandardBasicTypes.DOUBLE); 

    27. query.addScalar("deptno", StandardBasicTypes.INTEGER); 

    28. List<Object[]> list = query.list(); 

    29. for (Object[] arr : list) { 

    30. System.out.println(arr[0] + "\t" + arr[1] + "\t" + arr[2] + "\t" + arr[3] + "\t" + arr[4] + "\t" + arr[5] + "\t" + arr[6] + "\t" + arr[7]); 

    31. session.close(); 

    32. /** 查询全部 */

    33. @Test

    34. publicvoid test_sql3() { 

    35. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    36. Session session = sessionFactory.openSession(); 

    37. String sql = "select * from emp"

    38. SQLQuery query = session.createSQLQuery(sql); 

    39. query.addScalar("empno", StandardBasicTypes.INTEGER); 

    40. query.addScalar("ename", StandardBasicTypes.STRING); 

    41. query.addScalar("job", StandardBasicTypes.STRING); 

    42. query.addScalar("mgr", StandardBasicTypes.INTEGER); 

    43. query.addScalar("hiredate", StandardBasicTypes.DATE); 

    44. query.addScalar("sal", StandardBasicTypes.DOUBLE); 

    45. query.addScalar("comm", StandardBasicTypes.DOUBLE); 

    46. query.addScalar("deptno", StandardBasicTypes.INTEGER); 

    47. query.setResultTransformer(Transformers.aliasToBean(Emp.class)); 

    48. List<Emp> list = query.list(); 

    49. show(list); 

    50. session.close(); 

    51. /** 查询全部 (推荐) */

    52. @Test

    53. publicvoid test_sql4() { 

    54. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    55. Session session = sessionFactory.openSession(); 

    56. String sql = "select * from emp"

    57. SQLQuery query = session.createSQLQuery(sql); 

    58. query.addEntity(Emp.class); 

    59. // String sql = "select {e.*} from emp e";

    60. // SQLQuery query = session.createSQLQuery(sql);

    61. // query.addEntity("e", Emp.class);

    62. query.setCacheable(true); // 设置缓存

    63. List<Emp> list = query.list(); 

    64. show(list); 

    65. session.close(); 

    66. /** 条件查询 */

    67. @Test

    68. publicvoid test_where() { 

    69. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    70. Session session = sessionFactory.openSession(); 

    71. String sql = "select * from emp where ename like ?"

    72. SQLQuery query = session.createSQLQuery(sql); 

    73. query.addEntity(Emp.class); 

    74. query.setString(0"J%"); 

    75. // String sql = "select * from emp where ename like :ename";

    76. // SQLQuery query = session.createSQLQuery(sql);

    77. // query.addEntity(Emp.class);

    78. // query.setString("ename", "J%");

    79. List<Emp> list = query.list(); 

    80. show(list); 

    81. session.close(); 

    82. // 遍历集合

    83. privatevoid show(List<Emp> list) { 

    84. for (Emp emp : list) { 

    85. System.out.println(emp); 

    1. publicclass TestCRUD { 

    2. // 添加

    3. @Test

    4. publicvoid test_save() { 

    5. Customer customer = new Customer(); 

    6. customer.setName("monday"); 

    7. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    8. Session session = sf.openSession(); 

    9. Transaction tx = session.beginTransaction(); 

    10. Serializable id = session.save(customer); // 返回OID

    11. tx.commit(); 

    12. session.close(); 

    13. System.out.println("id=" + id); 

    14. // 添加

    15. @Test

    16. publicvoid test_persist() { 

    17. Customer customer = new Customer(); 

    18. customer.setName("monday"); 

    19. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    20. Session session = sf.openSession(); 

    21. Transaction tx = session.beginTransaction(); 

    22. session.persist(customer); // 无返回值

    23. tx.commit(); 

    24. session.close(); 

    25. // 添加

    26. @Test

    27. publicvoid test_saveOrUpdate1() { 

    28. Customer customer = new Customer(); 

    29. customer.setName("monday"); 

    30. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    31. Session session = sf.openSession(); 

    32. Transaction tx = session.beginTransaction(); 

    33. session.saveOrUpdate(customer); // OID 为空 执行save操作

    34. tx.commit(); 

    35. session.close(); 

    36. // 修改

    37. @Test

    38. publicvoid test_saveOrUpdate2() { 

    39. Customer customer = new Customer(); 

    40. customer.setName("monday_update"); 

    41. customer.setId(5); 

    42. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    43. Session session = sf.openSession(); 

    44. Transaction tx = session.beginTransaction(); 

    45. session.saveOrUpdate(customer); // OID 为不空 执行update操作

    46. tx.commit(); 

    47. session.close(); 

    48. // 修改

    49. @Test

    50. publicvoid test_update() { 

    51. Customer customer = new Customer(); 

    52. customer.setName("monday_update2"); 

    53. customer.setId(5); 

    54. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    55. Session session = sf.openSession(); 

    56. Transaction tx = session.beginTransaction(); 

    57. session.update(customer); 

    58. tx.commit(); 

    59. session.close(); 

    60. // 修改

    61. @Test

    62. publicvoid test_update_hql() { 

    63. String hql = "update Customer set name=? where id=?"

    64. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    65. Session session = sf.openSession(); 

    66. Transaction tx = session.beginTransaction(); 

    67. Query query = session.createQuery(hql); 

    68. query.setParameter(0"springfuncs"); 

    69. query.setParameter(15); 

    70. query.executeUpdate(); 

    71. tx.commit(); 

    72. session.close(); 

    73. // 删除

    74. @Test

    75. publicvoid test_delete() { 

    76. Customer customer = new Customer(); 

    77. customer.setId(5); 

    78. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    79. Session session = sf.openSession(); 

    80. Transaction tx = session.beginTransaction(); 

    81. session.delete(customer); 

    82. tx.commit(); 

    83. session.close(); 

    84. // 删除

    85. @Test

    86. publicvoid test_delete_hql() { 

    87. String hql = "delete from Customer where id=?"

    88. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    89. Session session = sf.openSession(); 

    90. Transaction tx = session.beginTransaction(); 

    91. Query query = session.createQuery(hql); 

    92. query.setParameter(06); 

    93. query.executeUpdate(); 

    94. tx.commit(); 

    95. session.close(); 

    96. // 查询

    97. @Test

    98. publicvoid test_get() { 

    99. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    100. Session session = sf.openSession(); 

    101. // Transaction tx = session.beginTransaction();

    102. Customer customer = (Customer) session.get(Customer.class1); 

    103. // tx.commit();

    104. session.close(); 

    105. System.out.println(customer); 

    106. // 查询

    107. @Test

    108. publicvoid test_load() { 

    109. SessionFactory sf = HibernateUtil.getSessionFactory(); 

    110. Session session = sf.openSession(); 

    111. // Transaction tx = session.getTransaction();

    112. // tx.begin();

    113. Customer customer = (Customer) session.load(Customer.class1); 

    114. // tx.commit();

    115. Hibernate.initialize(customer); 

    116. session.close(); 

    117. System.out.println(customer); 

    118. // 或者

    119. // System.out.println(customer);

    120. // session.close();

    1. publicclass TestAssociated { 

    2. // 交叉连接(多表的笛卡儿积不常用)

    3. // select c.*,o.* from customers c, orders o

    4. @Test

    5. publicvoid test_cross_join() { 

    6. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    7. Session session = sessionFactory.openSession(); 

    8. String hql = "from Customer c , Order o"

    9. Query query = session.createQuery(hql); 

    10. List<Object[]> list = query.list(); 

    11. for (int i = 0; i < list.size(); i++) { 

    12. Object[] obj = (Object[]) list.get(i); 

    13. Customer customer = (Customer) obj[0]; 

    14. Order order = (Order) obj[1]; 

    15. System.out.println((i + 1) + "---" + customer); 

    16. System.out.println((i + 1) + "---" + order); 

    17. session.close(); 

    18. // 内链接

    19. // select c.* from customers c inner join orders o on c.id=o.customer_id

    20. // select o.* from orders o where o.customer_id=?

    21. @Test

    22. publicvoid test_inner_join() { 

    23. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    24. Session session = sessionFactory.openSession(); 

    25. String hql = "select c from Customer c inner join c.orders"// inner 可省略

    26. Query query = session.createQuery(hql); 

    27. List<Customer> list = query.list(); 

    28. showCustomer(list); 

    29. session.close(); 

    30. // 左外连接

    31. // select c.* from customers c left outer join orders o on c.id=o.customer_id

    32. // select o.* from orders o where o.customer_id=?

    33. @Test

    34. publicvoid test_left_outer_join() { 

    35. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    36. Session session = sessionFactory.openSession(); 

    37. String hql = "select c from Customer c left outer join c.orders"// outer 可省略

    38. Query query = session.createQuery(hql); 

    39. List<Customer> list = query.list(); 

    40. showCustomer(list); 

    41. session.close(); 

    42. // 右连接

    43. // select c.*, o.* from customers c right outer join orders o on c.id=o.customer_id

    44. @Test

    45. publicvoid test_right_outer_join() { 

    46. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    47. Session session = sessionFactory.openSession(); 

    48. String hql = "from Customer c right outer join c.orders"// outer 可省略

    49. Query query = session.createQuery(hql); 

    50. List<Object[]> list = query.list(); 

    51. for (int i = 0; list != null && i < list.size(); i++) { 

    52. Object[] obj = list.get(i); 

    53. Customer customer = (Customer) obj[0]; 

    54. Order order = (Order) obj[1]; 

    55. System.out.println((i + 1) + "---" + customer); 

    56. System.out.println((i + 1) + "---" + order); 

    57. session.close(); 

    58. // 迫切内连接(推荐)

    59. // select c.*,o.* from customers c inner join orders o on c.id=o.customer_id

    60. @Test

    61. publicvoid test_inner_join_fetch() { 

    62. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    63. Session session = sessionFactory.openSession(); 

    64. String hql = "select c from Customer c inner join fetch c.orders"// inner 可省略

    65. Query query = session.createQuery(hql); 

    66. query.setCacheable(true); // 设置缓存

    67. List<Customer> list = query.list(); 

    68. showCustomer(list); 

    69. session.close(); 

    70. // 迫切左外连接(推荐)

    71. // select c.*,o.* from customers c left outer join orders o on c.id=o.customer_id

    72. @Test

    73. publicvoid test_left_outer_join_fetch() { 

    74. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    75. Session session = sessionFactory.openSession(); 

    76. String hql = "select c from Customer c left outer join fetch c.orders"// outer可省略

    77. Query query = session.createQuery(hql); 

    78. query.setCacheable(true); // 设置缓存

    79. List<Customer> list = query.list(); 

    80. showCustomer(list); 

    81. session.close(); 

    82. // 迫切左外连接(推荐)

    83. // select c.*, o.* from customers c left outer join orders o on c.id=o.customer_id

    84. @Test

    85. publicvoid test_left_outer_join_fetch_QBC() { 

    86. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    87. Session session = sessionFactory.openSession(); 

    88. Criteria criteria = session.createCriteria(Customer.class).setFetchMode("orders", FetchMode.JOIN); 

    89. criteria.setCacheable(true); // 设置缓存

    90. List<Customer> list = criteria.list(); 

    91. showCustomer(list); 

    92. session.close(); 

    93. // 打印Order信息

    94. privatevoid showCustomer(List<Customer> list) { 

    95. for (Customer customer : list) { 

    96. System.out.println(customer); 

    97. if (customer.getOrders() != null && customer.getOrders().size() > 0) { 

    98. Set<Order> orders = customer.getOrders(); 

    99. for (Iterator<Order> it = orders.iterator(); it.hasNext();) { 

    100. Order order = it.next(); 

    101. System.out.println(order); 

     

    1. publicclass TestCache { 

    2. // 测试Session缓存

    3. @Test

    4. publicvoid test_cache1() { 

    5. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    6. Session session = sessionFactory.openSession(); 

    7. Emp emp1 = (Emp) session.get(Emp.class7369); 

    8. Emp emp2 = (Emp) session.get(Emp.class7369); 

    9. System.out.println(emp1 == emp2); 

    10. // 测试 EHCache缓存

    11. // 配置缓存的话,会执行一条SQL,否则是2条SQL

    12. @Test

    13. publicvoid test_cache2() { 

    14. SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 

    15. Session session = sessionFactory.openSession(); 

    16. String hql = "from Emp"

    17. Query query = session.createQuery(hql); 

    18. query.setCacheable(true); 

    19. query.list(); 

    20. query = session.createQuery(hql); 

    21. query.setCacheable(true); 

    22. query.list(); 

     

 

 

你可能感兴趣的:(Hibernate4的一些总结)