(2)Hibernate实现CRUD

╰半橙微兮° 2022-05-10 10:08 332阅读 0赞

HibernateUtil:

  1. package util;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.cfg.Configuration;
  5. public class HibernateUtil {
  6. private final static SessionFactory f=buildSessionFactory();
  7. private static SessionFactory buildSessionFactory() {
  8. // TODO 自动生成的方法存根
  9. Configuration cfg=new Configuration().configure();
  10. return cfg.buildSessionFactory();
  11. }
  12. public static Session getSession() {
  13. return f.openSession();
  14. }
  15. public static void closeSession(Session s) {
  16. if(s!=null) s.close();
  17. }
  18. }

CRUD:

  1. package test;
  2. import java.util.Date;
  3. import java.util.List;
  4. import org.hibernate.Session;
  5. import org.junit.jupiter.api.Test;
  6. import model.User;
  7. import util.HibernateUtil;
  8. class TestCRUD {
  9. @Test
  10. void testAdd() {
  11. Session session=null;
  12. try {
  13. session=HibernateUtil.getSession();
  14. session.beginTransaction();
  15. User u=new User();
  16. u.setNickname("张三2");
  17. u.setBorn(new Date());
  18. u.setPassword("123");
  19. u.setUsername("zs2");
  20. session.save(u);
  21. session.getTransaction().commit();
  22. } catch (Exception e) {
  23. // TODO 自动生成的 catch 块
  24. e.printStackTrace();
  25. session.getTransaction().rollback();
  26. }finally {
  27. HibernateUtil.closeSession(session);
  28. }
  29. }
  30. @Test
  31. void testLoad() {
  32. Session session=null;
  33. try {
  34. session=HibernateUtil.getSession();
  35. User u=(User)session.load(User.class, 2);//查询没有对数据表进行修改,所以不需要事务
  36. System.out.println(u.toString());
  37. } catch (Exception e) {
  38. // TODO 自动生成的 catch 块
  39. e.printStackTrace();
  40. }finally {
  41. HibernateUtil.closeSession(session);
  42. }
  43. }
  44. @Test
  45. void testUpdate() {
  46. Session session=null;
  47. try {
  48. session=HibernateUtil.getSession();
  49. session.beginTransaction();
  50. User u=(User)session.load(User.class, 2);
  51. u.setNickname("张小三");
  52. session.update(u);
  53. session.getTransaction().commit();
  54. } catch (Exception e) {
  55. // TODO 自动生成的 catch 块
  56. e.printStackTrace();
  57. session.getTransaction().rollback();
  58. }finally {
  59. HibernateUtil.closeSession(session);
  60. }
  61. }
  62. @Test
  63. void testDelete() {
  64. Session session=null;
  65. try {
  66. session=HibernateUtil.getSession();
  67. session.beginTransaction();
  68. User u=new User();
  69. u.setId(2);
  70. session.delete(u);//传入有id的User对象即可,其他属性不需要
  71. session.getTransaction().commit();
  72. } catch (Exception e) {
  73. // TODO 自动生成的 catch 块
  74. e.printStackTrace();
  75. session.getTransaction().rollback();
  76. }finally {
  77. HibernateUtil.closeSession(session);
  78. }
  79. }
  80. @Test
  81. void testList() {
  82. Session session=null;
  83. try {
  84. session=HibernateUtil.getSession();
  85. List<User> users=session.createQuery("from User").setFirstResult(1).setMaxResults(2).list();
  86. for(User u:users) {
  87. System.out.println(u.toString());
  88. }
  89. } catch (Exception e) {
  90. // TODO 自动生成的 catch 块
  91. e.printStackTrace();
  92. }finally {
  93. HibernateUtil.closeSession(session);
  94. }
  95. }
  96. }

发表评论

表情:
评论列表 (有 0 条评论,332人围观)

还没有评论,来说两句吧...

相关阅读