Hibernate第一个程序(最基础的增删改查) --Hibernate
本例实现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的更多相关文章
- MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化
上篇文章中 我们已经创建了EF4.1基于code first的例子 有了数据库 并初始化了一些数据 今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...
- C#通过窗体应用程序操作数据库(增删改查)
为了体现面向对象的思想,我们把“增删改查”这些函数封装到一个数据库操作类里: 为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据: 我 ...
- hibernate 一对多 多对一 关系表 增删改查大礼包ps二级查也有
今天来到混元气功 这货大概的意思就是你中有我 我中有你 ps 这里就要说到维护关系 ps写这个用了我一下午.......也是刚刚好复习到这里 顺便就写写 注意:一般都在多方维护关系,至于是用单向还是用 ...
- week_one-python基础 列表 增删改查
# Author:larlly #列表增删改查#定义列表name = ["wo","ni","ta","wo"] #定义 ...
- mysql 的安装,密码及修改 ,权限,基础语句(增删改查)
参考网址:https://www.cnblogs.com/majj/p/9160383.html (安装等) https://www.cnblogs.com/majj/p/9160421.htm ...
- Django之model基础(增删改查)
一.ORM 映射关系 表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象二.创建表(建立模型) 在创建表之前的准备 ...
- Hibernate修改操作 删除操作 查询操作 增加操作 增删改查 Hibernate增删查改语句
我用的数据库是MySQL,实体类叫User public class User { private Integer uid; private String username; private Stri ...
- 关于android中数据库的创建以及基础的增删改查的相应操作
这里主要是掌握一些基本的相应的知识,具体的是阿金是等到明天在进行. 相应的知识点如下: 对于数据库中的一些常识.SQLite 没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使 ...
- SSM-MyBatis-02:Mybatis最基础的增删改查(查全部和查单独一个)
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 继续上次的开始,这次记录的是增删改查,上次重复过的代码不做过多解释 首先先创建mysql的表和实体类Book ...
随机推荐
- Python带_的变量或函数命名
python中的标识符可以包含数字.字母和_,但必须以字母或者_开头,其中以_开头的命名一般具有特殊的意义. 前后均带有双下划线__的命名 一般用于特殊方法的命名,用来实现对象的一些行为或者功能,比如 ...
- python --- 17. 面向对象成员
面向对象的成员 能写的所有成员 一.变量 1.实例变量 访问时 对象.变量 2.类变量 访问时 类名.变量 注意: 二.方法 1.实例方法 必须有一个参数(self) 调用时 ...
- C# 尝试读取或写入受保护的内存。这通常指示其他内存已损坏
用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身份运行,这个重置LSP连接)运行后提示要重启生效,结果没重启就OK了(重启不重启看最终效果).
- 《编写高质量代码:Web 前端开发修炼之道》 笔记与读后感
编写高质量代码:Web 前端开发修炼之道/曹刘阳著. —北京:机械工业出版社,2010.5 第一版 涉及到的知识点: 1. CSS Sprites 在国内很多人叫css精灵,是一种网页图片应用处理方式 ...
- Vue学习【第四篇】:Vue 之webpack打包工具的使用
什么是webpack webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个.vue文件中都可能html.js.css甚 ...
- Spring整合Redis&JSON序列化&Spring/Web项目部署相关
几种JSON框架用法和效率对比: https://blog.csdn.net/sisyphus_z/article/details/53333925 https://blog.csdn.net/wei ...
- Oracle 之 函数运用
NVL函数:NVL(a,b)就是判断a是否是NULL,如果不是返回a的值,如果是返回b的值 通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值 通过nvl 对定义值赋值的语法: ...
- 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T2(模拟)
题目要求很简单,做法很粗暴 直接扫一遍即可 注意结果会爆int #include <cstdio> #include <algorithm> #include <cstr ...
- kubectl基础支持
kubectl get deployment -n alpha kubectl get deployment *****-deployment -n alpha -o json kubectl rol ...
- DAG最小路径点覆盖
Problem 给出一个有向无环图 (\(DAG\)),求出最少使用其中多少条互不相交的路径覆盖所有点. Solution 若有 \(n\) 个点,对于每个点 \(i\) ,我们将它拆成两个点 \(i ...