首先,创建类对象

 package com.imooc.hibernate;

 public class Address {

     private String postcode; //邮编
private String phone; //电话
private String address; //地址 public Address() {}; public String getPostcode() {
return postcode;
}
public void setPostcode(String postcode) {
this.postcode = postcode;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Address(String postcode, String phone, String address) {
// super();
this.postcode = postcode;
this.phone = phone;
this.address = address;
}
@Override
public String toString() {
return "Address [postcode=" + postcode + ", phone=" + phone + ", address=" + address + "]";
} }
 package com.imooc.hibernate;

 import java.sql.Blob;
import java.util.Date; public class Students { private int sid;
private String sname;
private String gender;
private Date birthday;
private Address address;
private Blob picture; public Blob getPicture() {
return picture;
} public void setPicture(Blob picture) {
this.picture = picture;
} public Students() {} public Students(int sid, String sname, String gender, Date birthday, Address address, Blob picture) {
super();
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.birthday = birthday;
this.address = address;
this.picture = picture;
} @Override
public String toString() {
return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", birthday=" + birthday
+ ", address=" + address + ", picture=" + picture + "]";
} public Address getAddress() {
return address;
} public void setAddress(Address address) {
this.address = address;
} 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 getGender() {
return gender;
} public void setGender(String gender) {
this.gender = gender;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} }

创建类对象的配置文件

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-5-23 0:24:09 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.imooc.hibernate.Students" table="STUDENTS">
<id name="sid" type="int">
<column name="SID" />
<generator class="native" />
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" />
</property>
<property name="gender" type="java.lang.String">
<column name="GENDER" />
</property>
<property name="birthday" type="java.util.Date">
<column name="BIRTHDAY" />
</property>
<property name="picture" type="java.sql.Blob">
<column name="PICTURE" />
</property> <component name="address" class="com.imooc.hibernate.Address">
<property name="postcode" column="POSTCODE"/>
<property name="phone" column="PHONE"/>
<property name="address" column="ADDRESS"/>
</component>
</class>
</hibernate-mapping>

创建hibernate配置文件

 <?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="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">update</property> <mapping resource="com/imooc/hibernate/Students.hbm.xml"/>
</session-factory>
</hibernate-configuration>

创建测试类

 package com.icoom.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.util.Date; import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.imooc.hibernate.Address;
import com.imooc.hibernate.Students; public class StudentsTest { private SessionFactory sessionFactory;
private Session session;
private Transaction transaction; @Before
public void init() {
// 1.创建配置对象
Configuration config = new Configuration().configure();
// 2.创建服务注册对象
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
// 3.创建会话工厂对象
sessionFactory = config.buildSessionFactory(serviceRegistry);
// 会话对象
session = sessionFactory.openSession();
// 开启事务
transaction = session.beginTransaction();
} @After
public void destory() {
transaction.commit(); //提交事务
session.close(); //关闭session
sessionFactory.close();//关闭会话工厂
} @Test
public void testSaveStudents() {
Students s = new Students();
s.setSid(1);
s.setSname("老张");
s.setGender("男");
s.setBirthday(new Date());
Address address = new Address("250000", "1310531xxxx", "山东济南");
s.setAddress(address);
session.save(s);//保存对象进入数据库
} @Test
public void testGetStudents() {
Students s = (Students) session.get(Students.class, 1);
System.out.println(s);
} @Test
public void testLoadStudents() {
Students s = (Students) session.load(Students.class, 1);
System.out.println(s);
} @Test
public void testUpdateStudents() {
Students s = (Students) session.get(Students.class, 1);
s.setGender("女");
session.update(s);
} @Test
public void testDeleteStudents() {
Students s = (Students) session.get(Students.class, 1);
session.delete(s);
}
}

get和load方法的区别

  1. 在不考虑缓存的情况下,get方法会在调用之后立即向数据库发出sql语句,返回持久化对象;load方法会在调用后放回一个代理对象。该代理对象只保存了实体对象的id,知道使用对象的非主键属性时才会发出sql语句。
  2. 查询数据库中不存在的数据时,get方法返回null,load方法抛出org.hibernate.ObjectNotFoundException异常。

hibernate_07_单表操作_增删改操作的更多相关文章

  1. Maven+SSM框架,实现单表简单的增删改查

    目录 1.创建web Maven项目 2.创建java源码文件和resources资源文件 3.创建数据库配置文件:jdbc.properties 4.项目总体目录: 5.添加spring配置文件:a ...

  2. 415 DOM 查找列表框、下拉菜单控件、对表格元素/表单控件进行增删改操作、创建元素并且复制节点与删除、 对表格操作、通用性和标准的事件监听方法(点击后弹窗效果以及去掉效果)

    DOM访问列表框.下拉菜单的常用属性: form.length.options.selectedindex.type       使用options[index]返回具体选项所对应的常用属性:defa ...

  3. redis 与 spring整合 hash 增删改操作 list增删改操作

    本人,对于以前redis的学习是非常痛苦的!近期将以前的东西捡起来.以博客的形式存储,以便于以后快速捡起来,并和广大同胞一起分享! 1):简单介绍 redis 是基于C语言开发. redis是一个ke ...

  4. mysql之字段的修改,添加、删除,多表关系(外键),单表详细操作(增删改)

    字段的修改.添加和删除 create table tf1( id int primary key auto_increment, x int, y int ); #修改 alter table tf1 ...

  5. PreparedStatement实现表数据的增删改 & 封装数据库链接和关闭操作

    PreparedStatement实现表数据的增删改 PreparedStatementUpdateTest package com.aff.PreparedStatement; import jav ...

  6. MySQL增删改操作

    增删改操作 增加 看语法 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3-字段n) VALUES(值1,值2,值3-值n); #指定字段来插入数据,插入 ...

  7. 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式

    一. 背景 说起EF的增删改操作,相信很多人都会说,有两种方式:① 通过方法操作  和  ② 通过状态控制. 相信你在使用EF进行删除或修改操作的时候,可能会遇到以下错误:“ The object c ...

  8. mysql 的crud操作(增删改查)

    1.mysql添加记录 --添加记录的语法(可添加单条记录或者多条记录),INTO是可以省略的,字段名也可以省略的,但是如果省略的话,后面对应的value的值就要全部填写 INSERT [INTO] ...

  9. EasyUI----DataGrid行明细增删改操作

    http://blog.csdn.net/huchiwei/article/details/7787947   本文实现的是EasyUI-DataGrid行明细的增删改操作.具体参考来自以下文章: 官 ...

随机推荐

  1. PHP websocket之聊天室实现

    PHP部分 <?php error_reporting(E_ALL); set_time_limit(0);// 设置超时时间为无限,防止超时 date_default_timezone_set ...

  2. 第十节:numpy之数组文件操作

    1.安装ipython 2.创建txt文件 3.直接上代码:

  3. fork()调用使子进程先于父进程被调度

    由于内核使用写时复制机制,fork之后父子进程是共享页表描述符的,如果让父进程先执行,那么有很大几率父进程会修改共享页表指向的数据,那么内核此时必须给父进程分配并复制新的页表供父进程修改使用,那么如果 ...

  4. BZOJ 3732 Network 【模板】kruskal重构树

    [题解] 首先,我们可以发现,A到B的所有路径中,最长边的最小值一定在最小生成树上.我们用Kruskal最小生成树时,假设有两个点集U,V,若加入一条边w(u,v)使U,V联通,那么w就是U中每个点到 ...

  5. 强悍的 ubuntu —— 命令行访问网页

    所谓以命令行的方式访问网页,即是在终端下以文本的形式访问网站,这里推荐一个工具:w3m, $ sudo apt-get install w3m $ w3m www.baidu.com

  6. SpringMVC demo 小例子,实现简单的登录和注册

    1.创建一个动态的web工程 2.导入springMvc所需要的jar包(这里可以去网上找,资源有很多) 前两部就不详细描述了,后面才是正经代码~ 首先有一个web.xml文件,这个属于大配置文件,由 ...

  7. 种树(codevs 1768)

    题目描述 Description 为了绿化乡村,H村积极响应号召,开始种树了. H村里有n幢房屋,这些屋子的排列顺序很有特点,在一条直线上.于是方便起见,我们给它们标上1~n.树就种在房子前面的空地上 ...

  8. N天学习一个linux命令之kill

    用途 用于终止进程 用法 kill [-s signal|-p] [--] pid... kill -l [signal] 说明 1.默认发送信号15(请求终止进程,程序可以捕获,操作系统会杀死没有对 ...

  9. 申请Letencrypt的免费证书文件-nginx

    1.前言 Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla.思科.Akamai.IdenTrust和EFF等组织发起,目的就是向网站 ...

  10. poj 2506 Tiling(大数+规律)

    poj2506Tiling 此题规律:A[0]=1;A[1]=1;A[2]=3;--A[n]=A[n-1]+2*A[n-2];用大数来写,AC代码: #include<stdio.h> # ...