一、Hibernate入门案例剖析:

   ①创建实体类Student 并重写toString方法

  1. public class Student {
  2.  
  3. private Integer sid;
  4. private Integer age;
  5. private String name;
  6. public Integer getSid() {
  7. return sid;
  8. }
  9. public void setSid(Integer sid) {
  10. this.sid = sid;
  11. }
  12. public Integer getAge() {
  13. return age;
  14. }
  15. public void setAge(Integer age) {
  16. this.age = age;
  17. }
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. @Override
  25. public String toString() {
  26. return "Student [sid=" + sid + ", age=" + age + ", name=" + name + "]";
  27. }
  28.  
  29. }

  ② 创建学生对象 并赋值

 ③引入jar包

④ 构建大配置<hibernate.cfg.xml>

可分为以下步骤:

1.连接数据库的语句

2.sql方言

3.可省的配置(show_sql、format_sql 取值为true)

4.让程序生成底层数据表(hbm2ddl.auto) update/create。create是每次将数据表删除后,重新创建

5.关联小配置

<mapping resource="cn/happy/entity/Student.hbm.xml" />

关键代码如下:

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5.  
  6. <hibernate-configuration>
  7.  
  8. <session-factory>
  9.  
  10. <!-- Database connection settings 数据库连接设置-->
  11. <!-- 驱动类 -->
  12. <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
  13. <!-- url地址 -->
  14. <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl3</property>
  15. <property name="connection.username">wj</property>
  16. <property name="connection.password">9090</property>
  17.  
  18. <!-- SQL dialect (SQL 方言) -->
  19. <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
  20.  
  21. <!--在控制台打印后台的SQL语句 -->
  22. <property name="show_sql">true</property>
  23.  
  24. <!-- 格式化显示SQL -->
  25. <!-- <property name="format_sql">true</property> -->
  26. <!-- 自动生成student表 -->
  27. <property name="hbm2ddl.auto">update</property>
  28. <!-- 关联小配置 -->
  29. <mapping resource="cn/happy/entity/Student.hbm.xml" />
  30. <!-- <mapping class="cn.happy.entity.Grade"/> -->
  31.  
  32. </session-factory>
  33.  
  34. </hibernate-configuration>

⑤ 构建小配置(Student.hbm.xml)

  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5.  
  6. <hibernate-mapping package="cn.happy.entity">
  7. <class name="Student" table="STUDENT">
  8. <id name="sid" column="SID">
  9. <!-- 主键生成策略:native:
  10. native:如果后台是Oracle
  11. 后台是MySQL,自动应用自增
  12.  
  13. assigned:程序员给主键赋值
  14. uuid:32位的16进制数
  15. sequence
  16. native
  17.  
  18. -->
  19.  
  20. <generator class="assigned">
  21. <param name="sequence">SEQ_NUM</param>
  22. </generator>
  23. </id>
  24. <!-- <version name="version"></version> -->
  25. <property name="name" type="string" column="NAME"/>
  26. <property name="age"/>
  27. </class>
  28. </hibernate-mapping>

⑥ 工具类HibernateUtil、构建私有静态的Configuration、SessionFactory对象、定义返回session以及关闭session的方法

  1. private static Configuration cf=new Configuration().configure();
  2. private static SessionFactory sf=cf.buildSessionFactory();
  3.  
  4. //方法返回session
  5. public static Session getSession(){
  6. return sf.openSession();
  7. }
  8.  
  9. //关闭Session
  10.  
  11. public static void CloseSession(){
  12. getSession().close();
  13. }
  14. 复制代码

⑦测试类【增删改查】 使用标记After、Before可简化代码

  1. package cn.happy.test;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.Transaction;
  5. import org.hibernate.cfg.Configuration;
  6.  
  7. import org.junit.After;
  8. import org.junit.Before;
  9. import org.junit.Test;
  10.  
  11. import cn.happy.entity.Student;
  12. import cn.happy.util.HibernateUtil;
  13.  
  14. public class Test1 {
  15. Session session;
  16. Transaction tx;
  17.  
  18. @After
  19. public void afterTest(){
  20. tx.commit();
  21. HibernateUtil.CloseSession();
  22. }
  23.  
  24. @Before
  25. public void initData(){
  26. session=HibernateUtil.getSession();
  27. tx=session.beginTransaction();
  28. }
  29.  
  30. /*
  31. * get方法查询
  32. */
  33. @Test
  34. public void getData(){
  35. Student stu=(Student)session.get(Student.class, 3);
  36. System.out.println(stu);
  37. }
  38. /*
  39. * 增加
  40. */
  41.  
  42. @Test
  43. public void addData(){
  44. Student stu=new Student();
  45. stu.setSid(12);
  46. stu.setAge(11);
  47. stu.setName("李小龙1");
  48. //读取大配置文件 获取连接信息
  49. Configuration cfg=new Configuration().configure();
  50.  
  51. //创建SessionFactory
  52. SessionFactory fa=cfg.buildSessionFactory();
  53. //加工Session
  54. Session se=fa.openSession();
  55. Transaction tx = se.beginTransaction();
  56. //保存
  57. se.save(stu);
  58. //事务提交
  59. tx.commit();
  60. se.close();
  61.  
  62. System.out.println("Save ok!");
  63. }
  64.  
  65. /*
  66. * 删除
  67. */
  68. @Test
  69. public void delData(){
  70. Session session=HibernateUtil.getSession();
  71. Student stu=new Student();
  72. stu.setSid(2);
  73. Transaction tx=session.beginTransaction();
  74. session.delete(stu);
  75. tx.commit();
  76. HibernateUtil.CloseSession();
  77. System.out.println("del ok!");
  78. }
  79.  
  80. /*
  81. * 修改
  82. */
  83. @Test
  84. public void updateData(){
  85. Session session=HibernateUtil.getSession();
  86. Student stu=(Student)session.load(Student.class,3);
  87. stu.setName("呵呵");
  88. Transaction tx=session.beginTransaction();
  89. session.update(stu);
  90. tx.commit();
  91. HibernateUtil.CloseSession();
  92. System.out.println("update ok!");
  93. }
  94. }

Hibernate入门_增删改查的更多相关文章

  1. Mybatis入门之增删改查

    Mybatis入门之增删改查 Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了.(增删改都要添加)----- 浪费了我40多分钟怀疑人生后来去百度... 导入包: 引入配置文件: sq ...

  2. Hibernate入门案例 增删改

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

  3. 论坛模块_版块管理_增删改查&实现上下移动

    论坛模块_版块管理1_增删改查 设计实体Forum.java public class Forum { private Long id; private String name; private St ...

  4. Oracle学习总结_day01_day02_表的创建_增删改查_约束

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 更新: SELECT * FROM (SELECT R ...

  5. 肝 hibernate 配置and增删改查 and 测试

    已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 hibernate 谈谈 这篇文章就谈谈我对这货的理解吧. 在看这篇文章之前希望你 知道sessionfact ...

  6. Hibernate下的增删改查

    概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...

  7. hibernate搭建及其增删改查

    一.jar包 最基础的hibernatejar包,以及数据库驱动的jar包 二.数据库 t_user表 id int 主键 自动增长 name varchar() 三.配置文件 <?xml ve ...

  8. Redis入门之增删改查等常用命令总结

    Redis是用C语言实现的,一般来说C语言实现的程序"距离"操作系统更近,执行速度相对会更快. Redis使用了单线程架构,预防了多线程可能产生的竞争问题. 作者对于Redis源代 ...

  9. MyBatis入门2_增删改查+数据库字段和实体字段不一致情况

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 当数据库字段和实体bean中属性不一致时 之前数据库P ...

随机推荐

  1. java通过url抓取网页数据

    在很多行业中,要对行业数据进行分类汇总,及时分析行业数据,对于公司未来的发展,有很好的参照和横向对比.所以,在实际工作,我们可能要遇到数据采集这个概念,数据采集的最终目的就是要获得数据,提取有用的数据 ...

  2. ajax示例

    ajax(Asynchronous Javascript And XML)翻译成中文就是异步的javascript和XML,即用javascript语言与服务器进行异步交互,传输的数据为XML(当然, ...

  3. C++匿名名字空间

    转自:http://blog.csdn.net/eric_arrow/article/details/8978905 名字空间(namespace),是C++提供的一个解决符合名字冲突的特性.标准规定 ...

  4. web前端基础——初识JavaScript

    1 JavaScript概述 JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚 ...

  5. eclipse中添加tomcat ServerName 无法输入

    Eclipse的开发过程中,无法从以下方式,添加Tomcat服务器.  其中ServerName是被置为灰色的,无法编辑.  如何解决 1.  关闭Eclipse 2.  打开WorkSpace所在的 ...

  6. 解决Linux 下server和client 通过TCP通讯:accept成功接收却报错的问题

    今天在写简单的TCP通讯例子的时候,遇到了一个问题:server 和client能够连接成功,并且client也能够正常发送,但server就是接收不到,在网上搜索一番后,终于解决了问题.在这里整理如 ...

  7. Django----Request对象&Response对象

    Django 使用Request 对象和Response 对象在系统间传递状态. HttpRequest 对象: Request.body:一个字节字符串,表示原始HTTP 请求的正文.它对于处理非H ...

  8. RabbitMQ 高级指南

    1 RabbitMQ 简介 1.1 介绍 RabbitMQ 是一个由 erlang 开发的基于 AMQP(Advanced Message Queue)协议的开源实现.用于在分布式系统中存储转发消息, ...

  9. 20145321 《Java程序设计》第5周学习总结

    20145321 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 1.Try.catch:Java中所有错误都会被打包为对象,通过try和catch语法可以对代表错误的对象做 ...

  10. 2_jenkins_git创建创建及项目构建

    确保jenkins服务正常工作 进入WEB界面 查看git插件是否正常安装 "管理系统" --> "管理插件" "可选插件" 然后找到 ...