1、创建Person类

package com.icss.pojo;

public class Person {
private int uid;
private String uname;
private String pword;
private String addr; public int getUid() {
return uid;
} public void setUid(int uid) {
this.uid = uid;
} public String getUname() {
return uname;
} public void setUname(String uname) {
this.uname = uname;
} public String getPword() {
return pword;
} public void setPword(String pword) {
this.pword = pword;
} public String getAddr() {
return addr;
} public void setAddr(String addr) {
this.addr = addr;
} }

 2、创建person.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<!--映射配置文件
>映射配置文件名称和位置没法有固定要求
>映射配置文件中的name属性值写实体类相关内容
-- class 标签name属性值实体类全路径
-- id标签和property标签name属性值 实体类的属性名称(注意要完全一样)
-- id标签和property标签中的column属性是可以省略的,如果不写,则生成的字段名与属性名一样,建议写
出,这样比较清析。
-- property标签中 还有一个属性type属性,用于设定字段的类型,我们可以不用使用,这时hibernate会自动
生成相应的类型 -->
<class name="com.icss.pojo.Person" table="t_person">
<id name="uid" column="uid">
<generator class="increment"></generator>
</id>
<property name="uname" column="uname"></property>
<property name="pword" column="pword"></property>
<property name="addr" column="addr"></property>
</class>
</hibernate-mapping>

  3、创建hibernate.cfg.xml

<?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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration> <session-factory>
<!-- 配置数据库信息 必须配置 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hibernate_day01?useUnicode=true&characterEncoding=utf8</property> -->
<!-- <property name="hibernate.connection.url"> <![CDATA[jdbc:mysql://localhost:3306/hibernate_day01?useUnicode=true&characterEncoding=utf8]]></property> -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_day01?characterEncoding=utf8</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 配置数据库方言,就是针对不同的数据库有不同的sql标准 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--下列是Database Explore绑定数据库连接时候定义的数据源名称吧 无关紧要的一个东西,其实就是 Diver name -->
<property name="myeclipse.connection.profile">mysql</property> <!-- 配置hibernate信息 可选 -->
<!-- 输出底层sql语句 -->
<property name="show_sql">true</property>
<!-- 输出底层sql语句并格式化 -->
<property name="format_sql">true</property>
<!-- 使得hibernate帮助我们创建表,因为表不会自己创建,需要我们进行配置使其自动创建 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 把映射文件加载过来 -->
<!-- <mapping resource="com/icss/pojo/person.hbm.xml" /> -->
</session-factory> </hibernate-configuration>

  4、创建测试类

package com.icss.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Ignore;
import org.junit.Test; import com.icss.pojo.Person;
import com.icss.util.HibernateUtils; public class HibernateDemo {
/**
* 第一步 加载hibernate核心配置文件
* 第二步 创建SessionFactory对象
* 第三步 使用SessionFactory创建session对象
* 第四步 开启事务
* 第五步 写具体逻辑crud操作
* 第六步 提交事务
* 第七步 关闭资源
* 效果:
* 是否在数据库中生成表
* 看表中是否有记录
*/
@Ignore
@Test
public void test1() {
// 获取hibernate配置对象 通过配置对象加载hibernate默认配置 还可以cfg.configure(path);
Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
// 读取核心配置文件hibernate.cfg.xml,创建sessionFactory
// 在这个过程中,会根据映射关系,在数据库中把相应的表生成,前提是设置了
//<property name="hibernate.hbm2ddl.auto">update</property>
// 因为我们在创建SessionFactory过程中,这个过程特别耗资源(因为要创建表)
// 在hibernate操作中,建议一个项目一般创建一个SessionFactory对象(单例模式) 即HibernateUtils
SessionFactory sf=cfg.buildSessionFactory();
// 类似于jdbc连接,只是这个地方hibernate做了封装
Session ss = sf.openSession();
//开启事务
Transaction tx = ss.beginTransaction(); Person p=new Person();
p.setUname("zs");
p.setPword("123");
p.setAddr("shanghai"); ss.save(p); tx.commit(); ss.close();
sf.close();
} @Test
public void test2() {
//若不对映射文件的类进行操作,则注释掉
SessionFactory sf=HibernateUtils.getSessionFactory();
Session ss=sf.openSession();
/*
* > session可以理解为jdbc中的连接connection
* > 调用session里面不同的方法实现crud操作
* -- 添加 save 方法
* -- 修改 update 方法
* -- 删除 delete 方法
* -- 根据id查询 get 方法
* > 一个项目中我们一般只有一个SessionFactory,是单例的,Session对象是单线程对象
* -- Session对象不能共用,只能自己使用
*/ /*
* 事务概念
* 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。
* 也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。
* -- 事务四个特性
* 原子性、一致性、隔离性、持久性
* 原子性:事务中包含的各操作要么都做,要么都不做
* 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
* 隔离性:一个事务的执行不能被其他事务干扰。
* 持久性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
*/ /*
* 事务一致性理解1
* 当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。
* 如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,
* 这些未完成事务对数据库所做的修改有一部分已写入物理数据库,
* 这时数据库就处于一种不正确的状态,或者说是 不一致的状态。
*
* 事务一致性理解2
* 为了保证一致性(即10个人 的账号金额总数不变),那在我写代码的时候,如果写了代码:A=A-5000;
* 那就必须要写上B=B+5000,或者是C=C+5000,这样的代码才能保证了数据库的一致性状态。
* 那什么是原子性?就是将上面的两行代码合成为一个事务,要么全做,要么全不做。
* 比如我写了两行代码:A=A+2000;B=B+3000;如果这两行代码看成是一个事务,并且在某一时刻全执行完了,
* 那么这个事务的原子性满足了,但却没有满足数据库的一致性。
*/
}
}

  5、创建工具类

package com.icss.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtils {
private static SessionFactory sf = null; private HibernateUtils() {
// TODO Auto-generated constructor stub
} public static SessionFactory getSessionFactory(){
if(sf==null){
Configuration cfg=new Configuration().configure();
sf=cfg.buildSessionFactory();
}
return sf;
}
}

  

 

hibernate Day1 案例代码的更多相关文章

  1. hibernate Day2 案例代码

    1.编写实体类Person package com.icss.pojo; public class Person { private int uid; private String uname; pr ...

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

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

  3. Hibernate入门案例 增删改

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

  4. 用JS添加文本框案例代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. SQL Server 表的管理_关于事务的处理的详解(案例代码)

    SQL Server 表的管理_关于事务的处理的详解(案例代码) 一.SQL 事务 1.1SQL 事务 ●事务是在数据库上按照一定的逻辑顺序执行的任务序列,既可以由用户手动执行,也可以由某种数据库程序 ...

  6. SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)

    SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)-DML 1.SQL INSERT INTO 语句(在表中插入) INSERT INTO 语句用于向表中插入新记录. SQL I ...

  7. SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)

    SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE tabl ...

  8. SQL Server 表的管理_关于事务操作的详解(案例代码)

    SQL Server 表的管理_关于事务操作的详解(案例代码) 1.概念 事务(transaction): 是将多个修改语句组合在一起的方法,这个方法中的所有语句只有全部执行才能正确完成功能.即要么全 ...

  9. hibernate入门案例

    最近准备学ssh,今天学了一下hibernate,用的是hibernate4,现在已经出5了:配置文件很容易写错,写配置文件的时候尽量复制. 需要的jar包如下:(jar包我是直接放在项目工程里面了, ...

随机推荐

  1. Direct3D 9 入门样例程序 圆锥体

    介绍 Directx3D 9 什么是DirectX,非常好说了,Win32 C++ API.主要是多媒体编程方面的,长处体如今高性能了,如今我知道的版本号最高是D3D11,可是我是学习入门的,从D3D ...

  2. VC断点失败的原因之中的一个

    VC断点失败的原因之中的一个 flyfish 2014-10-23 情景 再debug状态下仅仅有一个cpp文件.命中不了断点. 提示 能够 同意源码与原始版本号不同 不採用,防止出现未知的隐患 问题 ...

  3. 文件管理中心iOS版简介

    App Store地址:https://itunes.apple.com/cn/app/id1023365565?mt=8 文件管理中心-装机必备的文件管家,专业的rar-zip 解压工具,局域网看片 ...

  4. Micro Frontends

    Micro Frontends - extending the microservice idea to frontend development https://micro-frontends.or ...

  5. console调试命令

    一.显示信息的命令 <!DOCTYPE html> <html> <head> <title>常用console命令</title> < ...

  6. redis---01

    redis是什么: redis是开源,BSD许可,高级的key-value存储系统. 可以用来存储字符串,哈希结构,链表,集合,因此,常用来提供数据结构服务. redis和memcached相比,的独 ...

  7. 机器学习 Hidden Markov Models 3

    Viterbi Algorithm 前面我们提到过,HMM的第二类问题是利用HMM模型和可观察序列寻找最有可能生成该观察序列的隐藏变量的序列.简单来说,第一类问题是通过模型计算生成观察序列的概率,而第 ...

  8. 六个优雅的 Linux 命令行技巧

    一些非常有用的命令能让命令行的生活更满足,使用 Linux 命令工作可以获得许多乐趣,但是如果您使用一些命令,它们可以减少您的工作或以有趣的方式显示信息时,您将获得更多的乐趣.在今天的文章中,我们将介 ...

  9. Centos6.5 6.6 (均可) 重置密码或强行破解root密码 简单操作

    centos忘记root密码怎么重置root密码? 使用Linux系统的时候root密码是十分关键的安全机制. 但是假设那天丢失了root密码的话问题就严重了. 百牛信息技术bainiu.ltd整理发 ...

  10. 148D

    概率dp+记忆化搜索 dp[i][j][0]表示当前公主走公主赢的概率,dp[i][j][1]表示当前龙走公主赢的概率,然后剩下的就是一些细节的讨论,记忆化搜索很方便 #include<bits ...