HelloWorldHibernate步骤:

HelloWorld

1,新建java项目hibernate_0100_HelloWorld

2,学习User-library-hibernate,并加入相应的jar包

a)项目右键-build path-configure build path-add  library

b)选择User-library,在其中新建library,命名hibernate

c)在该library中加入hibernate所需的包

  1. /required必须的包
  1. Sl4j jar日志包
  1. bytecode生成二进制字节码需要的

3,引入mysql的JDBC驱动包

4,在mysql中建立对应的数据库及表

a)create  database  hibernate;

b)use  hibernate

c)create table student (id int primary key,name  varchar(20),age  int  );

5,建立hibernate配置文件hibernate.cfg.xnl

a),从参考文档中copy

b),修改对应的数据库连接

c),注释掉暂时用不上的内容

6,建立Student类

7,建立Student映射文件Student.hbm.xml

映射关系:

哪个类-----------------------哪个表

类属性----------------------表字段

a)参考文档

8,将映射文件加入到hibernate.cfg.xml

<mapping resource="com/oracle/hibernate/model/Student.hbm.xml"/>

a)参考文档

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

项目架构:

  1. package com.oracle.hibernate.model;
  2.  
  3. public class Student {
  4. private int id;
  5. private String name;
  6. private int age;
  7. public int getId() {
  8. return id;
  9. }
  10. public void setId(int id) {
  11. this.id = id;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public int getAge() {
  20. return age;
  21. }
  22. public void setAge(int age) {
  23. this.age = age;
  24. }
  25. }

Hibernate.cfg.xml配置文件:

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5.  
  6. <hibernate-configuration>
  7.  
  8. <session-factory>
  9.  
  10. <!-- Database connection settings -->
  11. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  12. <property name="connection.url">jdbc:mysql://localhost/hibernate</property>
  13. <property name="connection.username">root</property>
  14. <property name="connection.password">root</property>
  15.  
  16. <!-- JDBC connection pool (use the built-in) -->
  17. <!-- hibernate自带的连接池,实际开发一般用applicationserver本身用jndi注册在里面的连接池 -->
  18. <!-- <property name="connection.pool_size">1</property> -->
  19.  
  20. <!-- SQL dialect -->
  21. <!-- 方言,hibernate已经统一了数据库的访问,他的HQL语句就是官方语言,但不过最终还是翻译成具体不同数据库的sql语句,(搜文档mysql)-->
  22. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  23.  
  24. <!-- Enable Hibernate's automatic session context management -->
  25. <!-- 3.2以后新加的内容,涉及到session。。。 -->
  26. <!-- <property name="current_session_context_class">thread</property> -->
  27.  
  28. <!-- Disable the second-level cache -->
  29. <!-- 把二级缓存disable掉,优化hibernate -->
  30. <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
  31.  
  32. <!-- Echo all executed SQL to stdout -->
  33. <!-- 要不要打印生成的sql语句 -->
  34. <property name="show_sql">true</property>
  35.  
  36. <!-- Drop and re-create the database schema on startup -->
  37. <!-- hbm(hibernatemapping) ,ddl(建表语句。是否自动生成建表语句)-->
  38. <!-- <property name="hbm2ddl.auto">update</property> -->
  39.  
  40. <mapping resource="com/oracle/hibernate/model/Student.hbm.xml"/>
  41.  
  42. </session-factory>
  43.  
  44. </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://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5.  
  6. <!-- 映射的是哪个package里的类 -->
  7. <hibernate-mapping package="com.oracle.hibernate.model">
  8. <!-- 类到表的映射 类名若和表名一致,table可以省略-->
  9.  
  10. <class name="Student">
  11. <id name="id"></id>
  12. <property name="name"></property>
  13. <property name="age"></property>
  14. </class>
  15.  
  16. </hibernate-mapping>

Test类:

  1. import org.hibernate.Session;
  2. import org.hibernate.SessionFactory;
  3. import org.hibernate.cfg.Configuration;
  4.  
  5. import com.oracle.hibernate.model.Student;
  6.  
  7. public class StudentTest {
  8.  
  9. /**
  10. * @param args
  11. */
  12. public static void main(String[] args) {
  13. Student s = new Student();
  14.  
  15. s.setId(3);
  16. s.setName("student3");
  17. s.setAge(3);
  18.  
  19. /**
  20. * Configuration.configure()读配置文件的。
  21. *Document,File,Sting ,Url四种重载方法,默认是读取src下的hibernate.cfg.xml
  22. */
  23. Configuration cfg = new Configuration();
  24.  
  25. /**
  26. * cfg.configure()已经把hibernate.cfg.xml解析了,返回值还是Configuration,
  27. * 是已经有了配置选项的Configuration对象。
  28. * buildSessionFactory()暂时理解为产生Connection的一个工厂
  29. */
  30. SessionFactory sf = cfg.configure().buildSessionFactory();
  31. Session session = sf.openSession();//打开新的Session
  32.  
  33. /**
  34. * 在hibernate里边的操作都应放在一个事务里
  35. * session.beginTransaction()返回值Transaction,可以把他存在来。随便
  36. */
  37. session.beginTransaction();
  38. /**
  39. * save时,先看s是Student类,然后去hibernate.cfg.xml配置文件找
  40. * <mapping resource="XXX.hbm.xml"/>
  41. * 看是否有这个配置文件,找到后,看他的映射关系,类和数据库表的映射关系,然后拼成sql语句
  42. * 自动连数据库,自动生成preparedStatement,自动执行executeUpdate
  43. */
  44. session.save(s);
  45.  
  46. /**
  47. * 拿到当前事务,提交
  48. */
  49. session.getTransaction().commit();
  50.  
  51. session.close(); //关闭session
  52. sf.close(); //关闭工厂
  53. }
  54.  
  55. }

注意:hibernate.cfg.xml名字不能改,约定俗成。Student.hbm.xml放在我们的Model类的包里。

session.save(s);方法执行图示:

  1. save时,先看sStudent类,然后去hibernate.cfg.xml配置文件找 <mapping resource="com/oracle/hibernate/model/Student.hbm.xml"/>,
  2.  
  3. 看是否有这个Student的类配置文件,找到后,看他的映射关系,类和数据库表的映射关系,类的属性和表字段的映射关系。然后拼成sql语句,自动连数据库,自动生成preparedStatement,自动执行executeUpdate,数据就保存到了数据库。
  4.  

查找出单个对象,修改,删除代码如下:

  1. //查询出id=1的Student
  2. Student s = (Student)session.get(Student.class,1);
  3.  
  4. System.out.println(s);
  5. //修改信息
  6. s.setAge(20);
  7. session.update(s);
  8. //删除一个对象
  9. //session.delete(s);
  10.  
  11. ts.commit();
  12.  
  13. if(session != null){
  14. if(session.isOpen())
  15. session.close();
  16. }
  17. sf.close();

第一个hibernate程序HelloWorldHibernate的更多相关文章

  1. 攻城狮在路上(壹) Hibernate(二)--- 第一个hibernate程序

    1.直接通过JDBC API持久化实体域对象: A.java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接. Connection:代表数据库连接. State ...

  2. Hibernate入门(1)-第一个Hibernate程序

    Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...

  3. 第一个Hibernate程序

    一 新建一个Java工程(Hibernate) 在src目录下创建一个名为"hibernate.cfg.xml"的文件并配置好各个属性,如下: <?xml version=& ...

  4. hibernate入门配置及第一个hibernate程序

    学习了hibernate后就想先给大家分享一下它的配置方法: jar包导入 一.数据库表的创建   二.开启hibernate配置 编译器:eclipse 数据库:mysql 1.创建第一个xml文件 ...

  5. 我的第一个Hibernate程序

    1.建表建序列(所用数据库为Oracle,数据库名为XE,创建用户hibernate,密码为123456) conn system/manager; ; grant connect to hibern ...

  6. 【SSH三大框架】Hibernate基础第一篇:编写第一个Hibernate程序

    接下来这几章节学习的是Hibernate,Hibernate的主要作用就是用来和数据库进行连接,简化了JDBC的操作. 首先,我们创建项目,然后把Hibernate的jar包和sqlserver的驱动 ...

  7. 第一个Hibernate 程序

    使用MyEclipse建立Hibernate工程 index页面的Jsp源文件 <%@ page language="java" import="java.util ...

  8. Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解

    在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基 ...

  9. 一个Hibernate小程序

    基本步骤 在前一篇博文Hibernate环境搭建中为大家详细的介绍如何搭建一个学习新类库的学习环境.今天,为大家带来一个Hibernate小例子,让大家能够快速上手. 步骤如下: 1.配置hibern ...

随机推荐

  1. Vivado&ISE&Quartus II调用Modelsim级联仿真

    博主一直致力寻找高效的工作方式,所以一直喜欢折腾软件,从刚开始只用软件IDE自带的编辑器,到Notepad++,再到后来的Vim,从用ISE14.7自带的Isim仿真,到发现更好的Modelsim,再 ...

  2. Lucene教程(四) 索引的更新和删除

    这篇文章是基于上一篇文章来写的,使用的是IndexUtil类,下面的例子不在贴出整个类的内容,只贴出具体的方法内容. 3.5版本: 先写了一个check()方法来查看索引文件的变化:   /**   ...

  3. docker把系统盘占满后的恢复

    docker报[Error response from daemon: Error running DeviceCreate (createSnapDevice) dm_task_run failed ...

  4. Java异常:选择Checked Exception还是Unchecked Exception?

    http://blog.csdn.net/kingzone_2008/article/details/8535287 Java包含两种异常:checked异常和unchecked异常.C#只有unch ...

  5. kv数据库对比总结

    集群型: hbase Cassandra scylladb redis类: redis + twemproxy codis 持久型: pika ssdb

  6. 用pillow和 opencv做透明通道的两图混全(blend)

    from PIL import Image as image foreground = image.open("donkey.png") background = image.op ...

  7. C# superGridControl 样式设置、加载数据、获取数据

    样式设置 superGridControl1.PrimaryGrid.SelectionGranularity = SelectionGranularity.Cell; //设置选中样式 单元格.整列 ...

  8. [C#学习笔记]C#中的decimal类型——《CLR via C#》

    System.Decimal是非常特殊的类型.在CLR中,Decimal类型不是基元类型.这就意味着CLR没有知道如何处理Decimal的IL指令. 在文档中查看Decimal类型,可以看到它提供了一 ...

  9. dockerfile 构建tomcat

    事先下载好tomcat和jdk的二进制包. 下载地址https://pan.baidu.com/s/1kWWHGEV 值得一说的是 tomcat的官方镜像 剪切了很多jdk和系统命令,所以生产环境建议 ...

  10. iOS 内嵌 View 的响应

    遇到一个问题就是我有一个 UITextField,点击后不能编辑而是会显示一个自定义的 dialog. 但发现问题是,UITextField 的对点击事件的反应非常吃顿,有时候好使有时候不好使. 后来 ...