一、基础Hibernate环境搭建(参见http://www.cnblogs.com/sangewuxie/p/9004968.html

二、实体类User及User.hbm.xml配置

1.User类

  1. package com.domain;
  2.  
  3. public class User {
  4. private Integer id;
  5. private String username;
  6. private String password;
  7. private Integer age;
  8. public Integer getId() {
  9. return id;
  10. }
  11. public void setId(Integer id) {
  12. this.id = id;
  13. }
  14. public String getUsername() {
  15. return username;
  16. }
  17. public void setUsername(String username) {
  18. this.username = username;
  19. }
  20. public String getPassword() {
  21. return password;
  22. }
  23. public void setPassword(String password) {
  24. this.password = password;
  25. }
  26. public Integer getAge() {
  27. return age;
  28. }
  29. public void setAge(Integer age) {
  30. this.age = age;
  31. }
  32. @Override
  33. public String toString() {
  34. return "User [id=" + id + ", username=" + username + ", password=" + password + ", age=" + age + "]";
  35. }
  36. }

2.User.hbm.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping>
  6. <!-- name: 完整类名 table:数据库表名 -->
  7. <class name="com.domain.User" table="user">
  8. <!-- id配置表的主键 name代表表中属性 -->
  9. <id name="id" column="id">
  10. <!-- 主键生成策略 -->
  11. <generator class="native"></generator>
  12. </id>
  13. <property name="username" column="username" type="string"></property>
  14. <property name="password" column="password" type="string"></property>
  15. <property name="age" column="age" type="integer"></property>
  16. </class>
  17. </hibernate-mapping>

三、hibernate.cfg.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!-- 指定方言 -->
  8. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  9. <!-- 数据库驱动 -->
  10. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  11. <!-- 数据库url -->
  12. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate02_1514010311</property>
  13. <!-- 数据库连接用户名 -->
  14. <property name="hibernate.connection.username">root</property>
  15. <!-- 数据库连接密码 -->
  16. <property name="hibernate.connection.password">0x3137</property>
  17. <!-- 将hibernate生成的sql语句打印到控制台 -->
  18. <property name="hibernate.show_sql">true</property>
  19. <!-- 将hibernate生成的sql语句格式化(语法缩进) -->
  20. <property name="hibernate.format_sql">true</property>
  21. <mapping resource="com/domain/User.hbm.xml" />
  22. </session-factory>
  23. </hibernate-configuration>

四、HibernateUtil

在这个工具类中写一个通过静态代码块生成唯一的SessionFactory,通过一个方法返回一个SessionFactory

  1. package com.util;
  2. import org.hibernate.SessionFactory;
  3. import org.hibernate.cfg.Configuration;
  4. public class HibernateUtil {
  5. private static Configuration cfg;
  6. private static SessionFactory sessionFactory;
  7. static {
  8. try {
  9. cfg = new Configuration().configure();
  10. sessionFactory = cfg.buildSessionFactory();
  11. }catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. }
  15. public static SessionFactory getSessionFactory() {
  16. return sessionFactory;
  17. }
  18. }

五、测试类TestUser

  1. package com.test;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.Transaction;
  5. import org.junit.Test;
  6. import com.domain.User;
  7. import com.util.HibernateUtil;
  8. public class TestUser {
  9. @Test
  10. public void saveUser() {
  11. SessionFactory sessionFactory = null;
  12. Session session = null;
  13. Transaction transaction = null;
  14. User user = new User();
  15. user.setUsername("三哥无邪");
  16. user.setPassword("1514010311");
  17. user.setAge(21);
  18. try {
  19. sessionFactory = HibernateUtil.getSessionFactory();
  20. session = sessionFactory.openSession();
  21. transaction = session.beginTransaction();
  22. session.save(user);
  23. transaction.commit();
  24. } catch (Exception e) {
  25. if (transaction!=null) {
  26. transaction.rollback();
  27. }
  28. e.printStackTrace();
  29. }finally {
  30. if(session!=null) {
  31. session.close();
  32. }
  33. }
  34. }
  35. @Test
  36. public void updateUser() {
  37. SessionFactory sessionFactory = null;
  38. Session session = null;
  39. Transaction transaction = null;
  40. try {
  41. sessionFactory = HibernateUtil.getSessionFactory();
  42. session = sessionFactory.openSession();
  43. transaction = session.beginTransaction();
  44. User user = session.get(User.class, 1);
  45. user.setUsername("三哥无邪啊");
  46. user.setPassword("1514010311");
  47. user.setAge(21);
  48. session.update(user);
  49. transaction.commit();
  50. } catch (Exception e) {
  51. if (transaction!=null) {
  52. transaction.rollback();
  53. }
  54. e.printStackTrace();
  55. }finally {
  56. if(session!=null) {
  57. session.close();
  58. }
  59. }
  60. }
  61. @Test
  62. public void queryUser() {
  63. SessionFactory sessionFactory = null;
  64. Session session = null;
  65. Transaction transaction = null;
  66. try {
  67. sessionFactory = HibernateUtil.getSessionFactory();
  68. session = sessionFactory.openSession();
  69. transaction = session.beginTransaction();
  70. User user = session.get(User.class, 2);
  71. System.out.println("ID:"+user.getId()+" 用户名:"+user.getUsername()+" 密码:"+user.getPassword());
  72. transaction.commit();
  73. } catch (Exception e) {
  74. if (transaction!=null) {
  75. transaction.rollback();
  76. }
  77. e.printStackTrace();
  78. }finally {
  79. if(session!=null) {
  80. session.close();
  81. }
  82. }
  83. }
  84. @Test
  85. public void deleteUser() {
  86. SessionFactory sessionFactory = null;
  87. Session session = null;
  88. Transaction transaction = null;
  89. try {
  90. sessionFactory = HibernateUtil.getSessionFactory();
  91. session = sessionFactory.openSession();
  92. transaction = session.beginTransaction();
  93. User user = session.get(User.class, 1);
  94. session.delete(user);
  95. transaction.commit();
  96. } catch (Exception e) {
  97. if (transaction!=null) {
  98. transaction.rollback();
  99. }
  100. e.printStackTrace();
  101. }
  102. }
  103. }

测试一次saveUser方法,结果如图

 

就此获取单例模式的SessionFactory的方式就完成了

版权声明:本文为sangewuxie原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sangewuxie/p/9028155.html