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@Testpublic 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对象(单例模式)    即HibernateUtilsSessionFactory 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();}@Testpublic 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;}
}

  

 

转载于:https://www.cnblogs.com/1020182600HENG/p/7419290.html

hibernate Day1 案例代码相关推荐

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

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

  2. 软件测试 白盒测试案例--代码输入日期计算星期数

    文章目录 软件测试 白盒测试案例--代码输入日期计算星期数 一.实验内容 二.实验步骤 三.实验结果 软件测试 白盒测试案例–代码输入日期计算星期数 一.实验内容 以下代码为输入日期计算星期数.对其代 ...

  3. 怎样处理重命名系列案例代码

    这篇文章主要介绍了批处理重命名系列案例代码 批处理用于文本/文件的操作确实非常简单有力!不用多么复杂的代码,仅一个记事本加上简洁的代码即可搞定大部分文本/文件的操作,下面记录下我用过的一些代码,基本都 ...

  4. R语言广义线性模型Logistic回归案例代码

    R语言广义线性模型Logistic回归案例代码 在实际应用中,Logistic模型主要有三大用途: 1)寻找危险因素,找到某些影响因变量的"坏因素",一般可以通过优势比发现危险因素 ...

  5. Kettle转换作业50个案例代码

    Kettle转换作业应用脚本 本文是Kettle转换作业微案例相关的脚本(代码)及注释的说明.本项目旨在技术交流与学习,由于本人能力有限,代码中难免有些错误,欢迎留言.私信反馈给我,希望对你有所帮助. ...

  6. 银联在线支付---利用测试案例代码模拟支付应用(修改)

    一.工程搭建 新建一个Web工程,命名为PayOnLine,把你下载好的案例代码拷贝到你的工程下,我的代码目录如下: acp_sdk.properties配置文件需要放在类根路劲下,里面的参数配置信息 ...

  7. 来FAL学风控|风控策略分析师的日常是怎样的?(案例+代码详解篇)

    风控策略分析师的日常是怎样的?(案例+代码详解篇) FAL金科应用研究院 做了5年的金融,3年的数据分析工作,从17年6月才真正接触代码,算不到熟练,但在不断的学习和工作实践中目前是可以解决任何问题的 ...

  8. Netty框架多人聊天案例,代码示例

    Netty框架多人聊天案例,代码示例 pom <?xml version="1.0" encoding="UTF-8"?> <project ...

  9. 21、python的K-means聚类分析方法案例代码

    1.聚类分析 是按照个体的特征将他们分类,让同一个类别内的个体之间具有较高的相似度,不同类别之间具有较大的差异性: 2.基本理论 Kmeans:K表示算法当中类的个数 Means 均值算法:K-mea ...

最新文章

  1. RS2008中控件ID冲突问题
  2. [AH2017/HNOI2017]礼物(FFT)
  3. 相机参数设置程序_自定义拍摄模式怎么设置?教你学会相机设置。
  4. currency abap_Java Currency getDefaultFractionDigits()方法及示例
  5. 如何查询Linux内核版本
  6. python之禅星号_那些用起来很爽,但用不好可能会被人打的Python骚操作
  7. java spark es_JavaSpark写RDD到ES时指定文档ID的
  8. 计算机网络 chapter 6 应用层
  9. express不是内部或外部命令的解决方法
  10. wcf 双向 java_我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
  11. nginx反向代理获取用户真实Ip地址
  12. 消息队列(MQ) 企业服务总线(ESB)
  13. java中接口(interface)及使用方法和注意事项
  14. 光伏运维将面临行业洗牌?
  15. UC号、百家号,为什么这些科技公司都押注“内容”?
  16. Mac: 椰菜花叶和FileVault2
  17. SIM卡PIN码管理
  18. Android studio通过荣耀20调试Android程序
  19. 14款前端常用的富文本编辑器插件
  20. 虚函数的实质——虚函数表

热门文章

  1. 触发器及其应用实验报告总结_555时基电路及其应用
  2. python将图片转换为字符_python如何将图片转换为字符图片
  3. .axf文件_ELF文件格式与readelf命令使用
  4. Pthon入门--range()函数
  5. 集训8.21树状数组讲解
  6. python ui自动_pytest+python下的UI自动化基础框架
  7. 2014蓝桥杯C++B:啤酒和饮料;切面条(思维分析)
  8. 玲珑杯round11-E:萌萌哒的第五题
  9. C++ STL 遍历vector
  10. Echarts数据可视化全解