hibernate入门实例

男娘i 2022-05-14 13:57 380阅读 0赞

###Hibernate5简单应用实例

1.下载Hibernate所需jar包
2.新建java项目,并导入jar包
3.新建User.java文件,User类的属性于数据库表的字段一一对应

  1. -- ----------------------------
  2. -- Table structure for `p_user`
  3. -- ----------------------------
  4. DROP TABLE IF EXISTS `p_user`;
  5. CREATE TABLE `p_user` (
  6. `user_id` int(11) NOT NULL AUTO_INCREMENT,
  7. `user_name` varchar(20) DEFAULT NULL,
  8. `user_pwd` varchar(20) DEFAULT NULL,
  9. `user_email` varchar(30) DEFAULT NULL,
  10. PRIMARY KEY (`user_id`)
  11. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
  12. -- ----------------------------
  13. -- Records of p_user
  14. -- ----------------------------
  15. INSERT INTO `p_user` VALUES ('1', 'yxc', '123456', 'for@163.com');
  16. INSERT INTO `p_user` VALUES ('2', '张飞', '123456', '1324688478@qq.com');
  17. INSERT INTO `p_user` VALUES ('5', '李四', '123456', null);
  18. INSERT INTO `p_user` VALUES ('6', 'LeBronJames', '123456', '1324688478@qq.com');
  19. package com.model;
  20. public class User {
  21. private int userId; //用户编号
  22. private String userName; //用户名
  23. private String userPwd; //密码
  24. private String userEmail;//邮箱
  25. public int getUserId() {
  26. return userId;
  27. }
  28. public String getUserName() {
  29. return userName;
  30. }
  31. public String getUserPwd() {
  32. return userPwd;
  33. }
  34. public String getUserEmail() {
  35. return userEmail;
  36. }
  37. public void setUserId(int userId) {
  38. this.userId = userId;
  39. }
  40. public void setUserName(String userName) {
  41. this.userName = userName;
  42. }
  43. public void setUserPwd(String userPwd) {
  44. this.userPwd = userPwd;
  45. }
  46. public void setUserEmail(String userEmail) {
  47. this.userEmail = userEmail;
  48. }
  49. }

4.新建User.hbm.xml文件,建立User类和p_user表的映射关系

  1. <?xml version="1.0"?>
  2. <!--
  3. ~ Hibernate, Relational Persistence for Idiomatic Java
  4. ~
  5. ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  6. ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  7. -->
  8. <!DOCTYPE hibernate-mapping PUBLIC
  9. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  10. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  11. <hibernate-mapping>
  12. <class name="com.model.User" table="p_user" lazy="false">
  13. <id name="userId" column="user_id">
  14. <generator class="increment"/>
  15. </id>
  16. <property name="userName" type="java.lang.String">
  17. <column name="user_name" length="30"/>
  18. </property>
  19. <property name="userPwd" type="java.lang.String">
  20. <column name="user_pwd"/>
  21. </property>
  22. <property name="userEmail" type="java.lang.String">
  23. <column name="user_email"/>
  24. </property>
  25. </class>
  26. </hibernate-mapping>

5.在src目录下新建hibernate.cfg.xml文件

  1. <!DOCTYPE hibernate-configuration PUBLIC
  2. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  4. <hibernate-configuration>
  5. <session-factory>
  6. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  7. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  8. <property name="hibernate.connection.username">root</property>
  9. <property name="hibernate.connection.password">Root</property>
  10. <property name="hibernate.connection.url">jdbc:mysql://localhost/pblog</property>
  11. <property name="hibernate.show_sql">true</property>
  12. <mapping resource="com/model/User.hbm.xml"/>
  13. <mapping class="com.model.User"/>
  14. </session-factory>
  15. </hibernate-configuration>

6.创建HibernateUtil工具类,用来获取hibernate的session对象

  1. package com.utils;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.cfg.Configuration;
  5. import org.hibernate.service.ServiceRegistry;
  6. import org.hibernate.service.ServiceRegistryBuilder;
  7. public class HibernateUtil {
  8. private static SessionFactory factory = null;
  9. static {
  10. Configuration configuration = new Configuration().configure();
  11. ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
  12. .applySettings(configuration.getProperties())
  13. .buildServiceRegistry();
  14. factory = configuration.buildSessionFactory(serviceRegistry);
  15. }
  16. public static Session getSession() {
  17. return factory.openSession();
  18. }
  19. }

7.创建UserDao.java文件,对User进行增删改查操作

  1. package com.dao;
  2. import com.model.User;
  3. import com.utils.HibernateUtil;
  4. import org.hibernate.Session;
  5. import org.hibernate.Transaction;
  6. public class UserDao {
  7. public User getUserByID(int id)
  8. {
  9. Session session = HibernateUtil.getSession();
  10. User user = (User)session.get(User.class, id);
  11. session.close();
  12. return user;
  13. }
  14. public void addUser(User user) {
  15. Session session = HibernateUtil.getSession();
  16. Transaction ts = session.beginTransaction();
  17. session.save(user);
  18. ts.commit();
  19. session.close();
  20. }
  21. public void updateUser(User user) {
  22. Session session = HibernateUtil.getSession();
  23. Transaction ts = session.beginTransaction();
  24. session.saveOrUpdate(user);
  25. ts.commit();
  26. session.close();
  27. }
  28. public void deleteUser(User user) {
  29. Session session = HibernateUtil.getSession();
  30. Transaction ts = session.beginTransaction();
  31. session.delete(user);
  32. ts.commit();
  33. session.close();
  34. }
  35. }

8.测试运行

  1. package com.test;
  2. import com.dao.UserDao;
  3. import com.model.User;
  4. public class Test {
  5. public static void main(String[] args) {
  6. User user=new User();
  7. user.setUserName("LeBronJames");
  8. user.setUserPwd("123456");
  9. user.setUserEmail("1324688478@qq.com");
  10. UserDao userDao=new UserDao();
  11. userDao.addUser(user);
  12. }
  13. }

查看控制台打印信息

  1. Hibernate: select max(user_id) from p_user
  2. Hibernate: insert into p_user (user_name, user_pwd, user_email, user_id) values (?, ?, ?, ?)

实现了往数据库中插入一条记录的操作
获取源码地址https://github.com/yangxuechen/ssh-learning-example/tree/master/HibernateTest

发表评论

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

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

相关阅读

    相关 Hibernate入门

    Hibernate框架概述 hibernate 属于持久层框架,其实就是dao层,Hibernate是一个开放源代码的关系映射框架.它对java进行了非轻量级的封装,使得程序

    相关 Hibernate入门

    1. 什么是hibernate ORM框架/持久层框架 jdbc的一个框架 object reference mapping 通过管理对象来改变数据库中的数据