使用hibernate前需要导入相关JAR包。

1.它可以接受词文法语言描述,并能产生识别这些语言的语句的程序

2.是一个Java的XML API,类似于jdom,用来读写XML文件的

3.支持注解配置

4.核心配置

5.jpa注解是hibernate的核心

6.编辑和创建Java字节码的类库

7.使用一个注解处理器来实现你的带注释的接口的具体类

8. 解释不清。。

9.单元测试

10.mysql驱动jar


1.src下创建hibernate.cfg.xml文件,提供数据库信息

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/demo</property><property name="connection.username">root</property><property name="connection.password">123</property><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!--显示sql语句--><property name="show_sql">true</property><!--格式化sql语句--><property name="format_sql">true</property><!--数据库中创建表结构--><property name="hbm2ddl.auto">update</property><!--映射表--><mapping resource="Student.hbm.xml"/></session-factory>
</hibernate-configuration>


2.创建实体类Student.java,遵循javabean规范。

package com.test;import java.sql.Blob;
import java.util.Date;/*** Created by Wdnncey on 2016/10/14.*/
public class Student {private int sid;private String sname;private String sex;private String address;private Date birthday;private Blob picture;public Student(int sid, String sname, String sex, String address, Date birthday, Blob picture) {this.sid = sid;this.sname = sname;this.sex = sex;this.address = address;this.birthday = birthday;this.picture = picture;}@Overridepublic String toString() {return "Student{" +"sid=" + sid +", sname='" + sname + '\'' +", sex='" + sex + '\'' +", address='" + address + '\'' +", birthday=" + birthday +", picture=" + picture +'}';}public Student(int sid) {this.sid = sid;}public Blob getPicture() {return picture;}public void setPicture(Blob picture) {this.picture = picture;}public Student() {}public int getSid() {return sid;}public void setSid(int sid) {this.sid = sid;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}
}


3.通过实体类映射xml文件,创建Student.hbm.xml,这个xml文件是对应数据库表的关系配置,里面的属性对应着相应字段!

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.test.Student" table="student"><id name="sid" type="int"><column name="SID"/><generator class="assigned"/></id><property name="sname" type="java.lang.String"><column name="SNAME"/></property><property name="address" type="java.lang.String"><column name="ADDRESS"/></property><property name="sex" type="java.lang.String"><column name="SEX"/></property><property name="birthday" type="java.util.Date"><column name="BIRTHDAY"/></property><property name="picture" type="java.sql.Blob"><column name="PICTURE" /></property></class></hibernate-mapping>


4.将Student.hbm.xml文件映射,添加到Hibernate.cfg.xml中!(上面的配置中已经存在)

 <mapping resource="Student.hbm.xml"/>


5.创建Test类(在执行测试方法前,需要手动创建数据库,表会由Hibernate自动创建)

public class StudentTtest {//初始化private SessionFactory sessionFactory;private Session session;private Transaction transaction;//在执行Test之前执行(Before)的注解。
    @Beforepublic void init(){//创建配置对象Configuration configuration = new Configuration().configure();//创建服务注册对象ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();//创建会话工厂对象sessionFactory = configuration.buildSessionFactory(serviceRegistry);//会话对象session =sessionFactory.openSession();//开启事务对象transaction = session.beginTransaction();}@Testpublic void testStudent(){Student student = new Student();student.setSname("Demo");student.setAddress("china");student.setBirthday(new Date());student.setSex("男");//通过sessin执行保存方法!
        session.save(student);}//在执行完Test注解后之情(After)注解。
    @Afterpublic void destory(){transaction.commit();//提交事务session.close();//关闭会话sessionFactory.close();//关闭会话工厂}

成功信息:      


查询记录:

    //get、load,都可以用来查询数据使用。
    @Testpublic void testGetStudent(){//查询主键记录为“1”的数据Student student = (Student) session.get(Student.class,1);System.out.println(student);}@Testpublic void testLoadStduent(){//查询主键记录为“1”的数据Student student = (Student) session.load(Student.class,1);System.out.println(student);}

成功信息: 


修改记录:

 @Testpublic void testUpdateStudent(){//查询主键记录为“1”的数据,并重新设置名称Student student = (Student) session.get(Student.class,1);student.setSname("Update后");}

成功信息:


删除记录:

 @Testpublic void testDeleteStudent(){//查询主键记录为“1”的数据,并且删除Student student = (Student) session.get(Student.class,1);session.delete(student);}

成功信息:


以上就是hibernate的CRUD操作。


get和load都可以查询数据,他们的根本区别,一句话,hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

转载于:https://www.cnblogs.com/wdnnccey/p/5959890.html

初识hibernate小案例相关推荐

  1. 分析初识vue小案例

    前言 我们已经写好了一个案例:初识vue小案例 接下来我们就分析初识vue小案例 容器和vue实例是一一对应的! 容器和vue实例应该是一一对应的,不允许出现一对一或者一对多 下面是一个一个容器对多个 ...

  2. HIbernate关联映射小案例(CRUD)

    做了一个hibernate关联映射的小案例(CRUD),包含一对多.多对多的映射关系. 先看概念数据模型 Student表因可能出现重名所以采用联合主键. School实体类 package org. ...

  3. axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求

    作为后端攻城狮,写前端代码是一种什么体验? 相信不少人和 @Python大星 一样,有写过前端代码的经历. 记录一下,Vue 框架开发中"啼笑皆非"的故事,非专业前端人员,该案例无 ...

  4. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student {private Integer sid;private Int ...

  5. Python:通过一个小案例深入理解IO多路复用

    通过一个小案例深入理解IO多路复用 假如我们现在有这样一个普通的需求,写一个简单的爬虫来爬取校花网的主页 import requests import timestart = time.time()u ...

  6. iptables小案例,nat表应用

    2019独角兽企业重金招聘Python工程师标准>>> iptables小案例: 需求1: 只针对filter表,预设INPUT链DROP,其他两个链ACCEPT,然后针对192.1 ...

  7. 4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例

    4.10/4.11/4.12 lvm讲解 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化.挂载-->扩容. 磁盘分区 注: 创建分区时 ...

  8. python程序实例教程基础-编程小案例

    编程小案例 本小节实现一个通讯录管理程序,通过这个案例来融会贯通之前所学习的知识,该程序使用到如下知识点: 条件选择 循环 列表 字典 键盘输入 屏幕输出 编写程序 addr-manage.py 实现 ...

  9. 在Eclipse中写第一个hibernate小例子

    在hibernate自带的文档中,包含了一个很简单的小例子,不过这个小例子是基于ant的,而且说的不是很详细,不利于新手学习.在这里,我将在Eclipse中实现这个例子,并给出详细的实现步骤.     ...

最新文章

  1. 有关Oracle角色管理
  2. 做互联网平台前要想清楚的5件事
  3. UNIX再学习 -- 标准I/O
  4. frida 安装特定版本
  5. DISCUZ x2.5 插件实现DIY功能,让页面也可以自由设计
  6. java 数据库改操作_数据库的插入、修改、删除操作(java实现)
  7. 单元测试Java Hadoop作业
  8. linux用户操作的日志,linux 用户操作记录并录入日志
  9. 使用python实现GBK转unicode码查询表
  10. 关于ng-cloak解决闪现问题的一点坑
  11. Activemq Jms 简单示例
  12. oracle 变长数组,oracle:变长数组varray,嵌套表,集合
  13. cad填充转多段线脚本
  14. Hibernate Validator 总结大全
  15. 2的20次方怎么用计算机计算,2的20次方(2的20次方简便方法)
  16. 在树莓派计算模块CM4 eMMC上安装Ubuntu Desktop 21.04
  17. vue异步获取图片流文件进行图片显示
  18. 【C++】setw()函数
  19. 成功就是一种自我满足
  20. 大数据技术与应用4-4MapRuduce

热门文章

  1. Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
  2. 这 10 道 Spring Boot 常见面试题你需要了解下
  3. 抛弃P值,选择更直观的A/B测试!
  4. 深圳启动全国首届人工智能大赛!536万奖金!这座城市对人才的投入从不吝啬...
  5. GitHub 的AI代码生成神器,其四成代码有漏洞,你还敢用吗
  6. 华人小哥开发“黑话”数据集,AI:你连dbq都不知道,xswl!| NAACL 2021
  7. 【2020】清华大学《高级机器学习》课件和专家特邀报告(附pdf下载)
  8. 套上这个壳,手机自己“跑步”去充电
  9. 我以前一直没有真正理解支持向量机,直到我画了一张图!
  10. k-means聚类算法从入门到精通