一、Hibernate入门案例剖析:

①创建实体类Student 并重写toString方法

public class Student {private Integer sid;private Integer age;private String name;public Integer getSid() {return sid;}public void setSid(Integer sid) {this.sid = sid;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student [sid=" + sid + ", age=" + age + ", name=" + name + "]";}}

② 创建学生对象 并赋值

③引入jar包

④ 构建大配置<hibernate.cfg.xml>

可分为以下步骤:

1.连接数据库的语句

2.sql方言

3.可省的配置(show_sql、format_sql 取值为true)

4.让程序生成底层数据表(hbm2ddl.auto) update/create。create是每次将数据表删除后,重新创建

5.关联小配置

<mapping resource="cn/happy/entity/Student.hbm.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><!-- Database connection settings 数据库连接设置--><!-- 驱动类 --><property name="connection.driver_class">oracle.jdbc.OracleDriver</property><!-- url地址 --><property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl3</property><property name="connection.username">wj</property><property name="connection.password">9090</property><!-- SQL dialect  (SQL 方言) --><property name="dialect">org.hibernate.dialect.Oracle10gDialect</property><!--在控制台打印后台的SQL语句 --><property name="show_sql">true</property><!-- 格式化显示SQL --><!-- <property name="format_sql">true</property> --><!-- 自动生成student表 --><property name="hbm2ddl.auto">update</property>  <!-- 关联小配置 --><mapping resource="cn/happy/entity/Student.hbm.xml" /><!-- <mapping class="cn.happy.entity.Grade"/> --></session-factory></hibernate-configuration>

⑤ 构建小配置(Student.hbm.xml)

<?xml version="1.0"?>
<!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.happy.entity"><class name="Student" table="STUDENT"><id name="sid" column="SID"><!-- 主键生成策略:native:native:如果后台是Oracle  后台是MySQL,自动应用自增assigned:程序员给主键赋值uuid:32位的16进制数sequencenative--><generator class="assigned"><param name="sequence">SEQ_NUM</param></generator></id><!--  <version name="version"></version> --><property name="name" type="string" column="NAME"/><property name="age"/></class>
</hibernate-mapping>

⑥ 工具类HibernateUtil、构建私有静态的Configuration、SessionFactory对象、定义返回session以及关闭session的方法

private static Configuration cf=new Configuration().configure();private static SessionFactory sf=cf.buildSessionFactory();//方法返回sessionpublic static Session getSession(){return sf.openSession();}//关闭Sessionpublic static void CloseSession(){getSession().close();}

⑦测试类【增删改查】 使用标记After、Before可简化代码

package cn.happy.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;import org.junit.After;
import org.junit.Before;
import org.junit.Test;import cn.happy.entity.Student;
import cn.happy.util.HibernateUtil;public class Test1 {Session session;Transaction tx; @Afterpublic void afterTest(){tx.commit();HibernateUtil.CloseSession();}@Beforepublic void initData(){session=HibernateUtil.getSession();tx=session.beginTransaction();}/** get方法查询*/@Testpublic void getData(){Student stu=(Student)session.get(Student.class, 3);System.out.println(stu);}/** 增加*/@Testpublic void addData(){Student stu=new Student();stu.setSid(12);stu.setAge(11);stu.setName("李小龙1");//读取大配置文件 获取连接信息Configuration cfg=new Configuration().configure();//创建SessionFactorySessionFactory fa=cfg.buildSessionFactory();//加工SessionSession se=fa.openSession();Transaction tx = se.beginTransaction();//保存se.save(stu);//事务提交tx.commit();se.close();System.out.println("Save ok!");}/** 删除*/@Testpublic void delData(){Session session=HibernateUtil.getSession();Student stu=new Student();stu.setSid(2);Transaction tx=session.beginTransaction();session.delete(stu);tx.commit();HibernateUtil.CloseSession();System.out.println("del ok!");}/** 修改*/@Testpublic void updateData(){Session session=HibernateUtil.getSession();        Student stu=(Student)session.load(Student.class,3);stu.setName("呵呵");Transaction tx=session.beginTransaction();session.update(stu);tx.commit();HibernateUtil.CloseSession();System.out.println("update ok!");}}

转载于:https://www.cnblogs.com/WuXuanKun/p/5848048.html

Hibernate入门案例及增删改查相关推荐

  1. JPA入门案例完成增删改查

    目录 一.ORM思想 二.JPA规范 三.搭建JPA的基础环境 1.创建数据库表 2.创建Maven工程导入坐标 3.创建JPA的核心配置文件 4.编写实体类,配置映射关系 四.入门案例--增删改查 ...

  2. 视频教程-.NET MVC5—60分钟快速入门学会《增删改查》-.NET

    .NET MVC5-60分钟快速入门学会<增删改查> 从事软件开发7年,熟悉软件开发流程,精通WEB系统程序开发.先后参与随州公安无纸化办公软件.速成会计财务管理软件.明源地产ERP等重大 ...

  3. Hibernate 多对多的增删改查。

    inverse Hibernate 多对多的增删改查你得先了解inverse功能作用. 百度文档: Inverse是hibernate双向关系中的基本概念.inverse的真正作用就是指定由哪一方来维 ...

  4. Hibernate 基本配置文件+基本增删改查

    文件结构 maven 依赖 <!-- hibernate 核心依赖 --> <dependency><groupId>org.hibernate</group ...

  5. 利用Hibernate进行数据库的增删改查

    Hibernate框架的主要作用是操纵数据库 因此其可以代替servlet中的DAO层,无需再写sql语句 因此也有对应的数据库增删改查的方法 1.添加数据 package com.oracle.se ...

  6. A.CTable开源框架Mybatis增强自动创建表/更新表结构/实现类似hibernate共通的增删改查-mybatis-enhance-actable

    mybatis-enhance-actable-1.3.1.RELEASE 项目已更新既支持传统Spring项目也支持Springboot项目,同时支持tk.mybatis能够支持更强大的CUDR(为 ...

  7. java springboot整合zookeeper入门教程(增删改查)

    java springboot整合zookeeper增删改查入门教程 zookeeper的安装与集群搭建参考:https://www.cnblogs.com/zwcry/p/10272506.html ...

  8. mybatis --入门 单表增删改查-curd

    目录 1. mybatis 环境搭建 2. 实体类映射文件配置(写sql) 3. mybatis核心配置文件 (环境配置) 4. 测试 mybatis document https://mybatis ...

  9. Series 入门(创建和增删改查)

    Series 是pandas两大数据结构中(DataFrame,Series)的一种.使用pandas 前需要将pandas 模块引入,因为Series和DataFrame用的次数非常多,所以将其引入 ...

最新文章

  1. python logging模块写入中文,文件乱码的解决方法
  2. CGCTF-Web-签到2
  3. 【C语言】逗号运算符的使用举例
  4. php fatal error 500,PHP在Linux下出现HTTP ERROR 500解决方法
  5. python界面卡顿_前端页面卡顿、也许是DOM操作惹的祸?
  6. struts2的标签中得到JSP脚本的变量值
  7. 51nod-1093:骆驼和香蕉
  8. 整理的C++面试,这些是最为常见的
  9. MySQL报错: Access denied for user 'root'@'localhost'
  10. 单片机C51产生正弦波可控制周期(通过计时器)
  11. 梯度消失、爆炸产生的原因以及解决方法
  12. 【Matlab学习手记】多元非线性回归
  13. mysql职院毕业论文设计_小说网站的设计与实现(27页)-原创力文档
  14. Alt键一直处于按下状态 解决办法
  15. Vue + Element-ui 实现table表格 数据相同项合并
  16. 人群计数数据集汇总和详细介绍,全网最全,crowd counting datasets
  17. diskman DiskGenius 恢复windows管理中删除分区数据
  18. Canvas实现微信大转盘抽奖代码
  19. 使用Python预测黄金AU9999收盘价
  20. 【Java并发编程实战14】构建自定义同步工具(Building-Custom-Synchronizers)

热门文章

  1. graphviz python_工具推荐|我是如何使用Python脚本分析CPU使用情况的?
  2. oracle 触发器更新视图,关于UPDATE触发器的详细介绍
  3. 20190811:只出现一次的数字(四种解法)
  4. 考研大纲词汇mysql下载_通过R语言统计考研英语(二)单词出现频率
  5. 全站仪坐标计算机公式,全站仪使用方法及坐标计算讲解
  6. 嵌入式设备中支持国密算法的方法
  7. 科大讯飞发布第三季度业绩报告:扣非净利润同比减少近9成
  8. Uber无人车为何危险:长期忽视模拟器,只在意路测 | 内部声音
  9. C++中string::find()函数和string::npos函数的使用
  10. jmeter学习指南之Beanshell Sampler 常用方法