本例实现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.  
  3. public class Student {
  4. int id;
  5. String name;
  6. int age;
  7. double score;
  8.  
  9. public Student() {
  10. super();
  11. // TODO Auto-generated constructor stub
  12. }
  13.  
  14. public Student(String name, int age, double score) {
  15. super();
  16. this.name = name;
  17. this.age = age;
  18. this.score = score;
  19. }
  20.  
  21. public int getId() {
  22. return id;
  23. }
  24.  
  25. public void setId(int id) {
  26. this.id = id;
  27. }
  28.  
  29. public String getName() {
  30. return name;
  31. }
  32.  
  33. public void setName(String name) {
  34. this.name = name;
  35. }
  36.  
  37. public int getAge() {
  38. return age;
  39. }
  40.  
  41. public void setAge(int age) {
  42. this.age = age;
  43. }
  44.  
  45. public double getScore() {
  46. return score;
  47. }
  48.  
  49. public void setScore(double score) {
  50. this.score = score;
  51. }
  52.  
  53. @Override
  54. public String toString() {
  55. return "Student [id=" + id + ", name=" + name + ", age=" + age
  56. + ", score=" + score + "]";
  57. }
  58. }

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

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

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

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

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

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

Hibernate第一个程序(最基础的增删改查) --Hibernate的更多相关文章

  1. MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化

    上篇文章中 我们已经创建了EF4.1基于code first的例子  有了数据库 并初始化了一些数据  今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...

  2. C#通过窗体应用程序操作数据库(增删改查)

    为了体现面向对象的思想,我们把“增删改查”这些函数封装到一个数据库操作类里: 为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据: 我 ...

  3. hibernate 一对多 多对一 关系表 增删改查大礼包ps二级查也有

    今天来到混元气功 这货大概的意思就是你中有我 我中有你 ps 这里就要说到维护关系 ps写这个用了我一下午.......也是刚刚好复习到这里 顺便就写写 注意:一般都在多方维护关系,至于是用单向还是用 ...

  4. week_one-python基础 列表 增删改查

    # Author:larlly #列表增删改查#定义列表name = ["wo","ni","ta","wo"] #定义 ...

  5. mysql 的安装,密码及修改 ,权限,基础语句(增删改查)

    参考网址:https://www.cnblogs.com/majj/p/9160383.html    (安装等) https://www.cnblogs.com/majj/p/9160421.htm ...

  6. Django之model基础(增删改查)

    一.ORM 映射关系 表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象二.创建表(建立模型) 在创建表之前的准备 ...

  7. Hibernate修改操作 删除操作 查询操作 增加操作 增删改查 Hibernate增删查改语句

    我用的数据库是MySQL,实体类叫User public class User { private Integer uid; private String username; private Stri ...

  8. 关于android中数据库的创建以及基础的增删改查的相应操作

    这里主要是掌握一些基本的相应的知识,具体的是阿金是等到明天在进行. 相应的知识点如下: 对于数据库中的一些常识.SQLite 没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使 ...

  9. SSM-MyBatis-02:Mybatis最基础的增删改查(查全部和查单独一个)

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 继续上次的开始,这次记录的是增删改查,上次重复过的代码不做过多解释 首先先创建mysql的表和实体类Book ...

随机推荐

  1. 从Git上导入Maven 项目到Eclipse

    Note: 经验之谈,操作过程中有不懂的地方可以留言问. Step: Open the Eclipse: --1.File>>Import>>Git:Project from ...

  2. topcoder srm 662 div1

    problem1 link 首先枚举差值$d$,判断是否存在一个序列任意连续两个之间的差值小于$d$. 首先将数字排序,然后从小到大依次放置每一个数字.每个当前的数字有两个位置可以放,当前序列的前面或 ...

  3. Redis 安装,配置以及数据操作

    Nosql介绍 Nosql:一类新出现的数据库(not only sql)的特点 不支持SQL语法 存储结构跟传统关系型数据库中那种关系表完全不同,nosql中存储的数据都是k-v形式 Nosql的世 ...

  4. GTK 菜单的创建详解

    1 定义 1.1 菜单由菜单条和菜单项组成,它们的定义如下所示: 菜单项(GtkMenuItem):添加到菜单条或下拉菜单中构件 顶层菜单项:添加到菜单条上的菜单项称为顶层菜单项 下拉菜单(GtkMe ...

  5. ActiveReports 大数据分析报告:公交车司乘冲突引发的刑事案件

    公交车司乘冲突刑事案件总体情况 公交车司乘冲突引发的刑事案件总量稳中有升 (注:本报告界定的“公交车司乘冲突刑事案件”,是指案件诱因为公交车司机与乘客在乘车过程中发生冲突而引发的刑事案件.包括但不限于 ...

  6. Angular CLI命令

    ng 基础命令 npm install –g @angular/cli npm install -g @angular/cli@latest ng serve –prot –aot 启动项目并压缩项目 ...

  7. SAP固定资产业务场景及方案

    SAP固定资产业务场景及方案 http://mp.weixin.qq.com/s/hYlaNHJMQBTZpyFAmP2h3A 对于FICO应用资深专家或顾问,须业务场景及需求成竹在胸:对于非财务顾问 ...

  8. [从零开始搭网站七]CentOS上安装Mysql

    点击下面连接查看从零开始搭网站全系列 从零开始搭网站 通过前面6章,我们买好了服务器,配置了服务器连接,服务器上配置了JDK和Tomcat,准备了域名(这个我没教,自己去阿里/百度/腾讯买,买东西我相 ...

  9. shell中的${},##, %% , :- ,:+, ? 的使用

    假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值:${file#*/}:删掉第一个/ 及其左边的字符串:dir1/dir2 ...

  10. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...