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

项目目录:

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

  create database test;

二、配置hibernate.cfg.xml配置文件,主要是指定与数据库的连接及其他的相关设置,看代码就懂了

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.url">
jdbc:mysql:///test
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQL5Dialect
</property>
<property name="hibernate.connection.provider_class">
org.hibernate.c3p0.internal.C3P0ConnectionProvider
</property>
<property name="hibernate.current_session_context_class">
thread
</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<mapping resource="com/beans/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>

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

Student.java:

package com.beans;

public class Student {
int id;
String name;
int age;
double score; public Student() {
super();
// TODO Auto-generated constructor stub
} public Student(String name, int age, double score) {
super();
this.name = name;
this.age = age;
this.score = score;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public double getScore() {
return score;
} public void setScore(double score) {
this.score = score;
} @Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age
+ ", score=" + score + "]";
}
}

Student.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 完成类到表的映射,属性到字段的映射 -->
<class name="com.beans.Student" table="t_student">
<id name="id" column="tid">
<generator class="native" />
</id>
<property name="name" column="tname" />
<property name="age" column="tage" />
<property name="score" column="tscore" />
</class>
</hibernate-mapping>

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

MyTest.java:

package com.test;

import org.hibernate.Session;
import org.junit.Test; import com.beans.Student;
import com.utils.HbnUtils; public class MyTest { /**
* 查询操作(查)
*/
@Test
public void testGet() { Session session = HbnUtils.getSession();
session.beginTransaction();// 等价于session.getTransaction().begin();
Student student = session.get(Student.class, 1);
System.out.println(student);
session.getTransaction().commit();
}
@Test
/**
* 保存信息(增)
*/
public void testSave(){
Session session = HbnUtils.getSession();//执行这一步表就会建出来
try {
session.beginTransaction();
Student student = new Student("Tom",21,98);
student.setId(1);
session.save(student);
session.getTransaction().commit(); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
session.getTransaction().rollback();
}
}
@Test
/**
* 修改信息
*/
public void testSaveOrUpdate(){
Session session = HbnUtils.getSession();//执行这一步表就会建出来
try {
session.beginTransaction();
Student student = new Student("Tom",21,100);//更新并保存tid为1的值
student.setId(1);
session.saveOrUpdate(student);
session.getTransaction().commit(); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
session.getTransaction().rollback();
}
}
@Test
/**
* 删除操作(删)
*/
public void testDelete(){
Session session = HbnUtils.getSession();//执行这一步表就会建出来
try {
session.beginTransaction();
Student student = new Student();
student.setId(1);//删除id是1的所有相关数据
session.delete(student);
session.getTransaction().commit(); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
session.getTransaction().rollback();
}
}
}

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. 【Python55--爬虫:代理】

    一.反爬虫之隐藏 1.网站检查访问的是正常用户还是程序,关键在于User-Agent 1).第一种方法:采用header --修改header(两种方法): -->  在Request之前通过h ...

  2. Mapreduce 历史服务 配置启动查看

    如果没有进行配置的话,那个History是不可以进行点击的,点击进去就会报错!所以需要进行配置一下 使用命令启动HistoryServer 就可以查看任务执行的进度了 命令: sbin/mr-jobh ...

  3. JDBC编程的步骤

    一.进行JDBC编程的步骤大致如下: 1.      加载数据库驱动,通常使用Class类的forName()静态方法来加载驱动.如下代码: Class.forName(dirvirClass) 上面 ...

  4. 51nod 1366 贫富差距(flody)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1366 题意: 思路: 如果不是一个连通块的话,肯定是无穷大的. 用flo ...

  5. python学习打卡 day07 set集合,深浅拷贝以及部分知识点补充

    本节的主要内容: 基础数据类型补充 set集合 深浅拷贝 主要内容: 一.基础数据类型补充 字符串: li = ["李嘉诚", "麻花藤", "⻩海峰 ...

  6. jqGrid API (转)

    来源:https://www.cnblogs.com/MonaSong/p/5109991.html JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGr ...

  7. C+++string类如何判断字符串为空

    string类是C++STL类之一,有很丰富的接口,判断string为空是经常用到的操作. string类为空,实际也就是元素为0个. 可以按照如下方式判断: 1.string类有自己的成员函数emp ...

  8. _rate_charaters

    该表可以控制特定玩家的掉率 guid 玩家角色guid,characters表中guid rate 掉落倍率,比如1.1,则该玩家普通掉率(groupid = 0时)提高1.1倍

  9. 【BZOJ】4542: [Hnoi2016]大数

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4542 给定一个由数字构成的字符串${S_{1,2,3,...,n}}$,一个正素数$P$, ...

  10. 冒烟测试(smoke testing)

    冒烟测试(smoke testing),就是开发人员在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障.冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常 ...