初识hibernate小案例
使用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小案例相关推荐
- 分析初识vue小案例
前言 我们已经写好了一个案例:初识vue小案例 接下来我们就分析初识vue小案例 容器和vue实例是一一对应的! 容器和vue实例应该是一一对应的,不允许出现一对一或者一对多 下面是一个一个容器对多个 ...
- HIbernate关联映射小案例(CRUD)
做了一个hibernate关联映射的小案例(CRUD),包含一对多.多对多的映射关系. 先看概念数据模型 Student表因可能出现重名所以采用联合主键. School实体类 package org. ...
- axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求
作为后端攻城狮,写前端代码是一种什么体验? 相信不少人和 @Python大星 一样,有写过前端代码的经历. 记录一下,Vue 框架开发中"啼笑皆非"的故事,非专业前端人员,该案例无 ...
- Hibernate入门案例及增删改查
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student {private Integer sid;private Int ...
- Python:通过一个小案例深入理解IO多路复用
通过一个小案例深入理解IO多路复用 假如我们现在有这样一个普通的需求,写一个简单的爬虫来爬取校花网的主页 import requests import timestart = time.time()u ...
- iptables小案例,nat表应用
2019独角兽企业重金招聘Python工程师标准>>> iptables小案例: 需求1: 只针对filter表,预设INPUT链DROP,其他两个链ACCEPT,然后针对192.1 ...
- 4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例
4.10/4.11/4.12 lvm讲解 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化.挂载-->扩容. 磁盘分区 注: 创建分区时 ...
- python程序实例教程基础-编程小案例
编程小案例 本小节实现一个通讯录管理程序,通过这个案例来融会贯通之前所学习的知识,该程序使用到如下知识点: 条件选择 循环 列表 字典 键盘输入 屏幕输出 编写程序 addr-manage.py 实现 ...
- 在Eclipse中写第一个hibernate小例子
在hibernate自带的文档中,包含了一个很简单的小例子,不过这个小例子是基于ant的,而且说的不是很详细,不利于新手学习.在这里,我将在Eclipse中实现这个例子,并给出详细的实现步骤. ...
最新文章
- 有关Oracle角色管理
- 做互联网平台前要想清楚的5件事
- UNIX再学习 -- 标准I/O
- frida 安装特定版本
- DISCUZ x2.5 插件实现DIY功能,让页面也可以自由设计
- java 数据库改操作_数据库的插入、修改、删除操作(java实现)
- 单元测试Java Hadoop作业
- linux用户操作的日志,linux 用户操作记录并录入日志
- 使用python实现GBK转unicode码查询表
- 关于ng-cloak解决闪现问题的一点坑
- Activemq Jms 简单示例
- oracle 变长数组,oracle:变长数组varray,嵌套表,集合
- cad填充转多段线脚本
- Hibernate Validator 总结大全
- 2的20次方怎么用计算机计算,2的20次方(2的20次方简便方法)
- 在树莓派计算模块CM4 eMMC上安装Ubuntu Desktop 21.04
- vue异步获取图片流文件进行图片显示
- 【C++】setw()函数
- 成功就是一种自我满足
- 大数据技术与应用4-4MapRuduce
热门文章
- Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
- 这 10 道 Spring Boot 常见面试题你需要了解下
- 抛弃P值,选择更直观的A/B测试!
- 深圳启动全国首届人工智能大赛!536万奖金!这座城市对人才的投入从不吝啬...
- GitHub 的AI代码生成神器,其四成代码有漏洞,你还敢用吗
- 华人小哥开发“黑话”数据集,AI:你连dbq都不知道,xswl!| NAACL 2021
- 【2020】清华大学《高级机器学习》课件和专家特邀报告(附pdf下载)
- 套上这个壳,手机自己“跑步”去充电
- 我以前一直没有真正理解支持向量机,直到我画了一张图!
- k-means聚类算法从入门到精通