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. linux使用rz、sz快速上传、下载文件

    平时都使用ftp工具进行文件的上传下载操作,针对于小文件的简单传输来说,有下面好的方法: 首先安装rz.sz工具: #yum install lrzsz 上传文件:rz 下载文件:sz 上传文件在sh ...

  2. 开启spark日志聚集功能

    spark监控应用方式: 1)在运行过程中可以通过web Ui:4040端口进行监控 2)任务运行完成想要监控spark,需要启动日志聚集功能 开启日志聚集功能方法: 编辑conf/spark-env ...

  3. GIS软件相关安装(持续更新)

    软件安装是GIS专业的必修课,总会忘记步骤,在此汇总 1.oracle ①无法登录 管理员登录 sqlplus sys/密码 as sysdba https://www.linuxidc.com/li ...

  4. kibana设置mapping

    demo: PUT linewell_assets_mgt_fz_es/lw_devices/_mapping { "properties": { "update_tim ...

  5. python作用域问题

    今天出了个低级的错误,最后确定是作用域问题,特回顾知识点如下: 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域. Python的作 ...

  6. 那些年读过的书《Java并发编程实战》和《Java并发编程的艺术》三、任务执行框架—Executor框架小结

    <Java并发编程实战>和<Java并发编程的艺术>           Executor框架小结 1.在线程中如何执行任务 (1)任务执行目标: 在正常负载情况下,服务器应用 ...

  7. java怎么实现统计一个字符串中字符出现的次数

    问题:假设字符串仅仅保护a-z 的字母,java怎么实现统计一个字符串中字符出现的次数?而且,如果压缩后的字符数不小于原始字符数,则返回. 处理逻辑:首先拆分字符串,以拆分出的字符为key,以字符出现 ...

  8. Nand Flash 驱动框架

    框架入口源文件:s3c_nand.c (可根据入口源文件,再按着框架到内核走一遍) 内核版本:linux_2.6.22.6   硬件平台:JZ2440 以下是驱动框架: 以下是驱动代码 s3c_nan ...

  9. 【Mock】【接口测试】【面试】mock-server 环境搭建—加分项!

    mock-server 环境搭建 前言 mock 除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的需要服务端提供 API 接口 此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发 ...

  10. ConcurrentHashMap详解

    public class ConcurrentHashMap<K,V>extends AbstractMap<K,V>implements ConcurrentMap<K ...