1.建立一个java项目,在目录下新建一个lib文件夹引入hibernate架包如图所示:

2. 新建com.LHB.domain包,在包中分别创建一个Employee.java和Employee.hbm.xml文件,

Employee.java中的代码如下:

 package com.LHB.domain;

 import java.util.Date;
//该pojo/javabean/domain按照规范应当序列化,目的是可以唯一的表示该对象呢,同时可以在网络和文件传输
public class Employee implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String email;
private Date hiredate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
} }

Employee.hbm.xml映射文件配置如下:

 <?xml version="1.0" encoding="utf-8"?>
<!-- 映射文件通过DTD来指定格式 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 该文件用于配置domain对象和表的映射关系 -->
<hibernate-mapping package="com.LHB.domain">
<class name="Employee" table="employee" >
<!-- id元素用于指定主键属性 -->
<!--
<id name="id" column="id" type="java.lang.Integer">
该元素用来指定主键生成的策略hilo native increment sequence uuid
<generator class="sequence">
<param name="sequence">emp_seq</param>
</generator>
</id>
-->
<!-- 在更改数据库时对主键生成策略做了修改 -->
<id name="id" column="id" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<!-- 如果id号希望用户自己设定,而不是由数据库MySQL -->
<!-- <id name="id" column="id" type="java.lang.Integer">
<generator class="assigned"/>
</id> -->
<!-- 对其它属性还要配置 -->
<property name="name" type="java.lang.String">
<column name="name" not-null="false" />
</property>
<property name="email" type="java.lang.String">
<column name="email" not-null="false" />
</property>
<property name="hiredate" type="java.util.Date">
<column name="hiredate" not-null="false" />
</property>
</class> </hibernate-mapping>

3.在项目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>
<!-- 配置使用的driver -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<!-- 配置dialect方言,明确告诉hibernate连接哪种数据库 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 显示出对应的sql语句 -->
<property name="show_sql">true</property>
<!-- 让hibernate给我们自动创建表 creat:如果mysql中没有该表则创建,如果有表则删除再创建
update:如果没有表则创建新表,如果有表则看表结构有没有变化,如果有变化则创建新表-->
<property name="hbm2ddl.auto">update</property>
<!-- 指定管理的对象映射文件 -->
<mapping resource="com/LHB/domain/Employee.hbm.xml"/> </session-factory>
</hibernate-configuration>

4. 创建一个测试类TestMain

 package com.LHB.view;

 import java.util.Date;

 import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session; import com.LHB.domain.Employee;
import com.LHB.util.MySessionFactory; public class TestMain { public static void main(String[] args) {
// TODO Auto-generated method stub updateEmp();
//addEmployee();
}
/**
* 删除用户
*/
private static void delEmp() {
//删除
//获取一个session
Session session = MySessionFactory.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
try {
//修改1.先获取该雇员,然后删除
Employee employee=(Employee) session.load(Employee.class, new Integer(3));
session.delete(employee);
transaction.commit();
session.close(); }catch (Exception e) {
if(transaction!=null) {
transaction.rollback();
} throw new RuntimeException(e.getMessage());
} finally {
//关闭session
if(session!=null&&session.isOpen()) {
session.close();
} }
}
/**
* 更新用户
*/
private static void updateEmp() {
//修改用户
//获取一个会话
/*Session session = MySessionFactory.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction();
//修改用户1.获取要修改的用户,2.修改
//load是可以通过主键属性,获取该对象实例,《----》表的记录对应
Employee employee = (Employee)session.load(Employee.class, new Integer(3));
employee.setName("张三");
transaction.commit();
session.close();
*/
//添加事务回滚优化之后
Session session = MySessionFactory.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
//do...
Employee employee = (Employee)session.load(Employee.class, new Integer(1));
//用户指定id号
//employee.setId(new Integer(100));
employee.setName("李四");
employee.setEmail("lisi@sohu.com"); /*//异常
int i=9/0;
//....
*/ transaction.commit(); }catch (Exception e) {
if(transaction!=null) {
transaction.rollback();
} throw new RuntimeException(e.getMessage());
} finally {
//关闭session
if(session!=null&&session.isOpen()) {
session.close();
} } }
/**
* 添加用户
*/
public static void addEmployee() {
//使用hibernate完成crud操作
//现在不使用service,直接测试
//1.创建Configuration,该对象用于读取hibernate.cfg.xml并完成初始化
Configuration configuration = new Configuration().configure();
//2.创建SessionFactory【这是一个会话工厂,是一个重量级的对象】
SessionFactory sessionFactory = configuration.buildSessionFactory();
//3.创建Session,相当于jdbc中的Connection
Session session = sessionFactory.openSession();
//4.对于hibernate,要求在进行增加,删除,修改的时候使用事物提交
Transaction transaction = session.beginTransaction(); try { //添加一个雇员
Employee employee = new Employee();
employee.setName("zhangsan");
employee.setEmail("zhangsan@126.com");
employee.setHiredate(new Date()); //保存,把对象保存到数据库
session.save(employee);//相当于insert into....[被hibernate封装]
transaction.commit();
session.close(); }catch (Exception e) {
if(transaction!=null) {
transaction.rollback();
} throw new RuntimeException(e.getMessage());
} finally {
//关闭session
if(session!=null&&session.isOpen()) {
session.close();
} }
} }

hibernate添加数据入门小案例的更多相关文章

  1. Hibernate的介绍及入门小案例

    1.Hibernate的诞生 在以前使用传统的JDBC开发应用系统时,如果是小型应用系统,并不觉得有什么麻烦,但是对于大型应用系统的开发,使用JDBC就会显得力不从心,例如对几十,几百张包含几十个字段 ...

  2. 02SpringMvc_springmvc快速入门小案例(XML版本)

    这篇文章中,我们要写一个入门案例,去整体了解整个SpringMVC. 先给出整个项目的结构图:

  3. spring boot入门小案例

    spring boot 入门小案例搭建 (1) 在Eclipse中新建一个maven project项目,目录结构如下所示: cn.com.rxyb中存放spring boot的启动类,applica ...

  4. React.js入门小案例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

  5. php+mysql简单的添加和删除小案例

    1.分析 index.php是呈现列表,通过点击列表页上的添加和删除按钮,对列表页上面的进行操作 index.php TODO:要将数据库里面的内容呈现到页面中 (1)连接数据库 (2)查询数据 (3 ...

  6. HIBERNATE 入门小案例

    刚刚开始肯定好多人都会问什么是hibernate呢? 那么下面我们就来了解一下什么事hibernate吧! 首先,Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对 ...

  7. hibernate添加数据,默认字段为null的问题解决

    数据库中的一个字段默认为0,但是在用hibernate的添加之后,默认字段竟然不是0,为NULL. 查了一下.发现想要让默认字段生效.需要在*.hbm.xml添加一些参数,如下.(红色部分) dyna ...

  8. Spring中AOP的初窥和入门小案例

    AOP:面向切面编程 AOP的主要作用:是为了程序员更好的关注"业务",专心"做事" 加上双引号的意思:所谓业务,是指他的核心,各行业中需要处理的核心事务,核心 ...

  9. SSM-Spring-03:Spring中AOP的初窥和入门小案例

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- AOP:面向切面编程 AOP的主要作用:是为了程序员更好的关注"业务",专心"做 ...

随机推荐

  1. Kubernetes中的nodePort,targetPort,port的区别和意义(转)

    原文https://blog.csdn.net/u013760355/article/details/70162242 https://blog.csdn.net/xinghun_4/article/ ...

  2. [developmemt][dpdk] dpdk优化(转)

    转发:https://software.intel.com/en-us/articles/dpdk-performance-optimization-guidelines-white-paper 转发 ...

  3. pip list 和 pip freeze

    https://blog.csdn.net/vitaminc4/article/details/76576956 Pip’s documentation statespip     descripti ...

  4. java 线程(五)线程安全 Lock接口

    package cn.sasa.demo3; import java.util.concurrent.ExecutionException; public class ThreadDemo { pub ...

  5. IE报错:[vuex] vuex requires a Promise polyfill in this browser.

    使用的是vue2.0版本 IE报错提醒: 导致原因:使用了 ES6 中用来传递异步消息的的Promise,而IE的浏览器不支持 解决办法: 1.安装babel-polyfill模块,babel-plo ...

  6. 腾讯互动课堂(Tencent Interact Class,TIC)SDK 词汇表

    词汇表 https://cloud.tencent.com/document/product/266/11732 封装格式 封装格式(Format)是将已经编码压缩好的视频流和音频流按照一定的格式规范 ...

  7. MongoDB 新建数据库和集合 查询集合

    MongoDB语法是原生ORM,根本不存在sql语句 创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间 新建数据库db1 > use db1 switched to db ...

  8. CentOS安装python3.5.0+uwsgi+nginx

    1安装编译工具 yum install zlib-devel bzip2-devel openssl-devel python-devel kernel-devel libffi-devel ncur ...

  9. 下载pywinauto

    1.下载pywinauto 链接:http://pywinauto.github.io/ 2.将安装包放到D:python36\script,进入pywinauto目录,按shift+右键,进入命令窗 ...

  10. DNS服务基础原理介绍

    FQDN 全称域名 localhost(主机名或者是别名).localdomain(域名)    FQDN=主机名.域名 根域               . 顶级域名       .com   .n ...