java之hibernate之crud
这篇文章主要讲解:
1>.对Hibernate使用的一些简单封装;
· 2>.在单元测试中,使用Hibernate的封装的工具进行增删改查的测试
1.目录结构展示

2.代码展示
2.0 配置文件 hibernate.cfg.xml
<!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="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 默认 localhost:3306 -->
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property> <!-- 通用配置 -->
<!-- 方言:hibernate要支持多种数据库,根据不同数据库生成对应的sql语句
告诉hibernate使用的什么数据库,以便生成对应数据库的sql
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 打印sql语句 -->
<property name="show_sql">true</property>
<!-- 格式化sql -->
<property name="format_sql">true</property>
<!-- 映射信息 注意映射文件存放的是文档路径 需要用/ -->
<mapping resource="cn/vincent/pojo/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
2.1 pojo 类
User
package cn.vincent.pojo;
import java.io.Serializable;
public class User implements Serializable {
private int id;
private String name;
private int age;
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;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (age != other.age)
return false;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
User.hbm.xml 即User的映射
<?xml version="1.0" encoding="UTF-8"?>
<!-- 映射文件的头文件和hibernate.cfg.xml的头文件不一样 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.vincent.pojo"> <class name="User" table="t_user"> <id name="id" column="id" type="int"> <generator class="native"></generator>
</id> <property name="name" column="name" type="java.lang.String"/>
<property name="age" column="age" type="int"/>
</class>
</hibernate-mapping>
2.2 util 工具类
package cn.vincent.util; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry; public class HibernateUtil {
private static Configuration cfg;
private static ServiceRegistry registry;
private static SessionFactory factory;
private static ThreadLocal<Session> session; static{
//初始化
cfg=new Configuration().configure();
registry=new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties())
.build();
factory=cfg.buildSessionFactory(registry);
session=new ThreadLocal<>();
}
//获取连接
public static Session getSession(){
if(session.get()==null){
session.set(factory.openSession());
}
return session.get();
} //释放资源
public static void close(){
if(session.get()!=null){
session.get().close();
session.set(null);
}
} }
2.3 单元测试
HibernateTest
package cn.vincent.hibernate; import java.util.List; import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test; import cn.vincent.pojo.User;
import cn.vincent.util.HibernateUtil; public class HibernateTest { //根据id查询单个对象
@Test
public void testGetById(){
Session session = HibernateUtil.getSession();
User user=(User)session.get(User.class, 2);
System.out.println(user.getId()+"----"+user.getName()+"----"+user.getAge());
HibernateUtil.close();
}
//添加数据
@Test
public void testSave(){
Session session=null;
Transaction tx =null;
try {
session = HibernateUtil.getSession();
User user= new User();
user.setName("金庸");
user.setAge(80);
//开启事务
tx = session.beginTransaction();
//返回 被保存数据的id
session.save(user);
//提交事务
tx.commit();
System.out.println("保存数据成功");
} catch (Exception e) {
e.printStackTrace();
//回滚事务
if(tx!=null)
tx.rollback();
System.out.println("保存数据失败");
}finally{
HibernateUtil.close();
} }
//删除数据
@Test
public void testDelete(){
Session session=null;
Transaction tx =null;
try {
session = HibernateUtil.getSession();
//开启事务
tx = session.beginTransaction();
User user =(User)session.get(User.class, 4);
session.delete(user);
//提交事务
tx.commit();
System.out.println("删除数据成功");
} catch (Exception e) {
e.printStackTrace();
//回滚事务
if(tx!=null)
tx.rollback();
System.out.println("删除数据失败");
}finally{
HibernateUtil.close();
}
}
//更新
@Test
public void testUpdate(){
Session session=null;
Transaction tx =null;
try {
session = HibernateUtil.getSession();
//开启事务
tx = session.beginTransaction();
User user =(User)session.get(User.class, 4);
user.setName("本拉登");
session.update(user);
//提交事务
tx.commit();
System.out.println("更新数据成功");
} catch (Exception e) {
e.printStackTrace();
//回滚事务
if(tx!=null)
tx.rollback();
System.out.println("更新数据失败");
}finally{
HibernateUtil.close();
}
}
//查询所有
@Test
public void testFindAll(){
Session session=null;
try {
session = HibernateUtil.getSession();
List<User> list = session.createCriteria(User.class).list();
for(User u:list){
System.out.println(u);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateUtil.close();
}
}
}
3.单元测试运行效果
运行单元测试

如下图:

java之hibernate之crud的更多相关文章
- Hibernate的CRUD以及junit测试
Hibernate的CRUD以及junit测试 1:第一步创建动态工程引包,省略. 2:第二步,创建数据库和数据表,省略. 3:第三步,创建实体类,如User.java,源码如下所示: 对于实体类,一 ...
- ssh架构之hibernate(一)简单使用hibernate完成CRUD
1.Hibernate简介 Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,h ...
- Hibernate之CRUD实践
Hibernate作为一个高度封装的持久层框架,曾经是非常牛逼的,现在虽然应用不是特别广,比如我前公司主要是做OA的,应用的框架就是Spring+SpringMVC+Hibernate. Hibern ...
- 数据库、Java与Hibernate数据类型对照
数据类型对照表: 标准SQL数据类型 Java数据类型 Hibernate数据类型 TINYINT byte.java.lang.Byte byte SMALLINT short.java.lang. ...
- Java,Hibernate,标准sql数据类型之间的对应表
(2010-07-14 19:53:50) 转载▼ 标签: 杂谈 分类: JAVA Hibernate API简介 其接口分为以下几类: l 提供访问数据库的操作的接口: l ...
- java框架篇---hibernate之CRUD操作
CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写. 下面列举实例来讲解这几个操作: 实体类: ...
- (29)java web的hibernate使用-crud的dao
1, 做个简单的util public class HibernateUtils { private static SessionFactory sf; static { //加载主要的配置文件 sf ...
- Hibernate基本CRUD
1 hibernate 框架介绍 冬眠:开发的代码基本不变. 1.1回顾jdbc Java提供的标准的数据访问的API 作用:完成应用程序java程序中的数据和db中的数据进行交换. 工作过程: A ...
- hibernate之CRUD操作
CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写. 下面列举实例来讲解这几个操作: 实体类: ...
随机推荐
- 前后端通信—CORS(支持跨域)
根据前端跨域的那些事这篇文章中的跨域的理解这一块,我们重新创建两个服务,第一个服务使用了test.html const http = require('http') const fs = requir ...
- flask + Python3 实现的的API自动化测试平台---- IAPTest接口测试平台,更名:FXTest 接受定制开发(java版开发完毕)
**背景: 1.平时测试接口,总是现写代码,对测试用例的管理,以及测试报告的管理持久化做的不够, 2.工作中移动端开发和后端开发总是不能并行进行,需要一个mock的依赖来让他 ...
- 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP)
目录 刷题记录:[SUCTF 2019]EasyWeb(EasyPHP) 一.涉及知识点 1.无数字字母shell 2.利用.htaccess上传文件 3.绕过open_basedir/disable ...
- ACR Code Pacs
ACR Index for Radiological Diagnosis 简称ACR Index,ACR Key或ACR Code,是一种应用于影像学分类的病理编码,由美国放射学院(American ...
- Network Function Virtualization: Challenges and Opportunities for Innovations
年份:2015 ABSTRACT 最近提出了网络功能虚拟化,以提高网络服务供应的灵活性并减少新服务的上市时间. 通过利用虚拟化技术和通用的商用可编程硬件(例如通用服务器,存储和交换机),NFV可以将网 ...
- 【转】怎么去阅读Chromium的源码?
同样路过一下. 从初学者角度的话,如果是刚开始研究chromium,建议找个老版本chromium来看.新版太大太复杂了. 我建议从github搜下chromium.bb这个项目,是个chromium ...
- Learning Face Age Progression: A Pyramid Architecture of GANs-1-实现人脸老化
Learning Face Age Progression: A Pyramid Architecture of GANs Abstract 人脸年龄发展有着两个重要的需求,即老化准确性和身份持久性, ...
- JAVA垃圾回收-可达性分析算法
在java中是通过引用来和对象进行关联的,也就是说如果要操作对象,必须通过引用来进行.那么很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收.不失一般性,如果一个对象没有任何引用与之关联 ...
- 服务器推送(Server push)技术总结
1. 短轮询 ajax按一定间隔去请求 2. 长轮询(long Polling) Long Polling的实现很简单,可分为四个过程: 发起Polling发起Polling很简单,只需向服务器发起请 ...
- 分类的性能评估:准确率、精确率、Recall召回率、F1、F2
import numpy as np import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer f ...