经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » ASP.net » 查看文章
Hibernate第一个程序(最基础的增删改查) --Hibernate
来源:cnblogs  作者:牛新龙的个人博客  时间:2018/9/25 20:42:42  对本文有异议

 本例实现Hibernate的第一个程序,Hibernate的优点我想大家都很清楚,在这里不做过多赘述。总之,使用Hibernate对数据库操作,也就是来操作实体对象的!

项目目录:

一、第一步要做的就是先建个数据库,这很简单,一条语句搞定;

  create database test;

二、配置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. <property name="hibernate.connection.driver_class">
  8. com.mysql.jdbc.Driver
  9. </property>
  10. <property name="hibernate.connection.url">
  11. jdbc:mysql:///test
  12. </property>
  13. <property name="hibernate.connection.username">root</property>
  14. <property name="hibernate.connection.password">123456</property>
  15. <property name="hibernate.dialect">
  16. org.hibernate.dialect.MySQL5Dialect
  17. </property>
  18. <property name="hibernate.connection.provider_class">
  19. org.hibernate.c3p0.internal.C3P0ConnectionProvider
  20. </property>
  21. <property name="hibernate.current_session_context_class">
  22. thread
  23. </property>
  24. <property name="hibernate.hbm2ddl.auto">update</property>
  25. <property name="hibernate.show_sql">true</property>
  26. <property name="hibernate.format_sql">true</property>
  27. <mapping resource="com/beans/Student.hbm.xml" />
  28. </session-factory>
  29. </hibernate-configuration>

 

三、建实体类(Student.java)和相应的映射文件(Student.hbm.xml)

Student.java:

  1. package com.beans;
  2. public class Student {
  3. int id;
  4. String name;
  5. int age;
  6. double score;
  7. public Student() {
  8. super();
  9. // TODO Auto-generated constructor stub
  10. }
  11. public Student(String name, int age, double score) {
  12. super();
  13. this.name = name;
  14. this.age = age;
  15. this.score = score;
  16. }
  17. public int getId() {
  18. return id;
  19. }
  20. public void setId(int id) {
  21. this.id = id;
  22. }
  23. public String getName() {
  24. return name;
  25. }
  26. public void setName(String name) {
  27. this.name = name;
  28. }
  29. public int getAge() {
  30. return age;
  31. }
  32. public void setAge(int age) {
  33. this.age = age;
  34. }
  35. public double getScore() {
  36. return score;
  37. }
  38. public void setScore(double score) {
  39. this.score = score;
  40. }
  41. @Override
  42. public String toString() {
  43. return "Student [id=" + id + ", name=" + name + ", age=" + age
  44. + ", score=" + score + "]";
  45. }
  46. }

Student.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. <!-- 完成类到表的映射,属性到字段的映射 -->
  7. <class name="com.beans.Student" table="t_student">
  8. <id name="id" column="tid">
  9. <generator class="native" />
  10. </id>
  11. <property name="name" column="tname" />
  12. <property name="age" column="tage" />
  13. <property name="score" column="tscore" />
  14. </class>
  15. </hibernate-mapping>

四、junit测试,主要是测试操作实体类对象对数据库进行增删改查

MyTest.java:

  1. package com.test;
  2. import org.hibernate.Session;
  3. import org.junit.Test;
  4. import com.beans.Student;
  5. import com.utils.HbnUtils;
  6. public class MyTest {
  7. /**
  8. * 查询操作(查)
  9. */
  10. @Test
  11. public void testGet() {
  12. Session session = HbnUtils.getSession();
  13. session.beginTransaction();// 等价于session.getTransaction().begin();
  14. Student student = session.get(Student.class, 1);
  15. System.out.println(student);
  16. session.getTransaction().commit();
  17. }
  18. @Test
  19. /**
  20. * 保存信息(增)
  21. */
  22. public void testSave(){
  23. Session session = HbnUtils.getSession();//执行这一步表就会建出来
  24. try {
  25. session.beginTransaction();
  26. Student student = new Student("Tom",21,98);
  27. student.setId(1);
  28. session.save(student);
  29. session.getTransaction().commit();
  30. } catch (Exception e) {
  31. // TODO: handle exception
  32. e.printStackTrace();
  33. session.getTransaction().rollback();
  34. }
  35. }
  36. @Test
  37. /**
  38. * 修改信息
  39. */
  40. public void testSaveOrUpdate(){
  41. Session session = HbnUtils.getSession();//执行这一步表就会建出来
  42. try {
  43. session.beginTransaction();
  44. Student student = new Student("Tom",21,100);//更新并保存tid为1的值
  45. student.setId(1);
  46. session.saveOrUpdate(student);
  47. session.getTransaction().commit();
  48. } catch (Exception e) {
  49. // TODO: handle exception
  50. e.printStackTrace();
  51. session.getTransaction().rollback();
  52. }
  53. }
  54. @Test
  55. /**
  56. * 删除操作(删)
  57. */
  58. public void testDelete(){
  59. Session session = HbnUtils.getSession();//执行这一步表就会建出来
  60. try {
  61. session.beginTransaction();
  62. Student student = new Student();
  63. student.setId(1);//删除id是1的所有相关数据
  64. session.delete(student);
  65. session.getTransaction().commit();
  66. } catch (Exception e) {
  67. // TODO: handle exception
  68. e.printStackTrace();
  69. session.getTransaction().rollback();
  70. }
  71. }
  72. }

testSave():数据库表中添加了一条数据(增)

testDelete():删除这条数据(删)

testSaveOrUpdate():更新了这条数据(改)

texstGet():查询这条数据全部信息(查)

 

附:个人网站www.nxl123.cn(后台采用Python Flask框架搭建,2019年1月1日将升级完成并正式启用。哎,本人是学生狗呢!网站做的不好希望大家多多提意见或建议吧!?别骂我就好!……以后SEO什么的还得多向大家学习……)

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号