一个、Hibernate开发。

上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类。

为了可以使用Hibernate高速上手,我们先解说一个简单的Hibernate应用实例hibernate_first。

二、开发流程。

1.首先在MyEclipce中新建一个hibernate_first的项目,然后新建后的项目文件夹为:

2.配置Hibernate环境。

3.编写持久化类User.java

  1. package com.bjpowernode.hibernate;
  2.  
  3. import java.util.Date;
  4.  
  5. public class User {
  6.  
  7. private String id;
  8.  
  9. private String name;
  10.  
  11. private String password;
  12.  
  13. private Date createTime;
  14.  
  15. private Date expireTime;
  16.  
  17. public String getId() {
  18. return id;
  19. }
  20.  
  21. public void setId(String id) {
  22. this.id = id;
  23. }
  24.  
  25. public String getName() {
  26. return name;
  27. }
  28.  
  29. public void setName(String name) {
  30. this.name = name;
  31. }
  32.  
  33. public String getPassword() {
  34. return password;
  35. }
  36.  
  37. public void setPassword(String password) {
  38. this.password = password;
  39. }
  40.  
  41. public Date getCreateTime() {
  42. return createTime;
  43. }
  44.  
  45. public void setCreateTime(Date createTime) {
  46. this.createTime = createTime;
  47. }
  48.  
  49. public Date getExpireTime() {
  50. return expireTime;
  51. }
  52.  
  53. public void setExpireTime(Date expireTime) {
  54. this.expireTime = expireTime;
  55. }
  56. }

4.编写生成映射文件User.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. <hibernate-mapping>
  6. <class name="com.bjpowernode.hibernate.User">
  7. <id name="id">
  8. <generator class="uuid"/>
  9. </id>
  10. <property name="name"/>
  11. <property name="password"/>
  12. <property name="createTime"/>
  13. <property name="expireTime"/>
  14. </class>
  15. </hibernate-mapping>

5.编写hibernate.cfg.xml文件。

  1. <!DOCTYPE hibernate-configuration PUBLIC
  2. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  4.  
  5. <hibernate-configuration>
  6. <session-factory >
  7. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  8. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_frist</property>
  9. <property name="hibernate.connection.username">root</property>
  10. <property name="hibernate.connection.password">root</property>
  11. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  12. <property name="hibernate.show_sql">true</property>
  13. <property name="hibernate.format_sql">true</property>
  14. <mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
  15. </session-factory>
  16. </hibernate-configuration>

6.生成表的类ExportDB.java。

  1. package com.bjpowernode.hibernate;
  2.  
  3. import org.hibernate.cfg.Configuration;
  4. import org.hibernate.tool.hbm2ddl.SchemaExport;
  5.  
  6. /**
  7. * 将hbm生成ddl
  8. * @author Administrator
  9. *
  10. */
  11. public class ExportDB {
  12.  
  13. public static void main(String[] args) {
  14.  
  15. //默认读取hibernate.cfg.xml文件
  16. Configuration cfg = new Configuration().configure();
  17.  
  18. SchemaExport export = new SchemaExport(cfg);
  19. export.create(true, true);
  20. }
  21. }

7.以上六个步骤已经把表建起来了以下我们就保存个数据。新建一个Client.java类来存入一个数据。

代码例如以下:

  1. package com.bjpowernode.hibernate;
  2.  
  3. import java.util.Date;
  4.  
  5. import org.hibernate.Session;
  6. import org.hibernate.SessionFactory;
  7. import org.hibernate.cfg.Configuration;
  8.  
  9. public class Client {
  10.  
  11. public static void main(String[] args) {
  12.  
  13. //读取hibernate.cfg.xml文件
  14. Configuration cfg = new Configuration().configure();
  15.  
  16. //建立SessionFactory
  17. SessionFactory factory = cfg.buildSessionFactory();
  18.  
  19. //取得session
  20. Session session = null;
  21. try {
  22. session = factory.openSession();
  23. //开启事务
  24. session.beginTransaction();
  25. User user = new User();
  26. user.setName("张三");
  27. user.setPassword("123");
  28. user.setCreateTime(new Date());
  29. user.setExpireTime(new Date());
  30.  
  31. //保存User对象
  32. session.save(user);
  33.  
  34. //提交事务
  35. session.getTransaction().commit();
  36. }catch(Exception e) {
  37. e.printStackTrace();
  38. //回滚事务
  39. session.getTransaction().rollback();
  40. }finally {
  41. if (session != null) {
  42. if (session.isOpen()) {
  43. //关闭session
  44. session.close();
  45. }
  46. }
  47. }
  48. }
  49. }

三、总结。

一个简单的Hibernate样例就出来了在Hibernate初学时利用这个样例能够让我们更好的入门。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

新秀学习Hibernate——一个简单的例子的更多相关文章

  1. OpenCV学习(2)——一个简单的例子

    光说不练假把式,来看一个简单的例子,了解了解OpenCV.这个小demo没有几行代码,作用是显示项目目录下面的一张图片. #include <opencv2\opencv.hpp> #in ...

  2. Spring-Context之一:一个简单的例子

    很久之前就想系统的学习和掌握Spring框架,但是拖了很久都没有行动.现在趁着在外出差杂事不多,就花时间来由浅入深的研究下Spring框架.Spring框架这几年来已经发展成为一个巨无霸产品.从最初的 ...

  3. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

  4. 关于apriori算法的一个简单的例子

    apriori算法是关联规则挖掘中很基础也很经典的一个算法,我认为很多教程出现大堆的公式不是很适合一个初学者理解.因此,本文列举一个简单的例子来演示下apriori算法的整个步骤. 下面这个表格是代表 ...

  5. 扩展Python模块系列(二)----一个简单的例子

    本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...

  6. fitnesse - 一个简单的例子(slim)

    fitnesse - 一个简单的例子(slim) 2017-09-30 目录1 编写测试代码(Fixture code)2 编写wiki page并运行  2.1 新建wikiPage  2.2 运行 ...

  7. Struts2的配置和一个简单的例子

    Struts2的配置和一个简单的例子 笔记仓库:https://github.com/nnngu/LearningNotes 简介 这篇文章主要讲如何在 IntelliJ IDEA 中使用 Strut ...

  8. 一个简单的例子搞懂ES6之Promise

    ES5中实现异步的常见方式不外乎以下几种: 1. 回调函数 2. 事件驱动 2. 自定义事件(根本上原理同事件驱动相同) 而ES6中的Promise的出现就使得异步变得非常简单.promise中的异步 ...

  9. 一个简单的例子了解states

    在大规模的配置管理工作中,我们要编写大量的states.sls文件.top.sls是states系统的入口文件,它负责指定哪些设备调用哪些states.sls文件.statse的默认工作目录是在/sr ...

随机推荐

  1. Android中TextView中内容不换行的解决方法

    问题 如果新建的Android项目采用的Android 3.0以上的SDK,同时采用了 <style name="AppTheme" parent="@androi ...

  2. Windows Phone开发(40):漫谈关键帧动画之中篇

    原文:Windows Phone开发(40):漫谈关键帧动画之中篇 一.DiscreteDoubleKeyFrame 离散型关键帧动画,重点,我们理解一下"离散"的意思,其实你查一 ...

  3. python关于for循环的几个函数

    1.enumerate:返回2个值,1是当前的for循环的第几轮,2是循环得到的数值 enumerate works by supplying a corresponding index to eac ...

  4. Web Worker在WebKit中的实现机制

    web worker 是执行在后台的 JavaScript,独立于其它脚本.不会影响页面的性能.这是HTML5的一个标准:实现上讲.浏览器为wokrer启动了新的线程,从而实现了异步操作的功能; 以下 ...

  5. 强联通块tarjan算法

    http://poj.org/problem?id=1236第一问:需要几个学校存在软件,才能通过传递,使得所有的学校都有软件 用tarjan算法求出强联通分量后,将每个联通分量缩成一个点,那么问题1 ...

  6. (hdu 7.1.8)Quoit Design(最低点——在n一个点,发现两点之间的最小距离)

    主题: Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...

  7. 二十7天 春雨滋润着无形 —Spring依赖注入

    6月11日,明确."夏条绿已密,朱萼缀明鲜.炎炎日正午,灼灼火俱燃." IT人习惯把详细的事物加工成的形状一致的类.正是这种一致,加上合适的规范.才干彰显对象筋道的牙感和bean清 ...

  8. Java多线程的wait(),notify(),notifyAll()

    在多线程的情况下.因为多个线程与存储空间共享相同的过程,同时带来的便利.它也带来了访问冲突这个严重的问题. Java语言提供了一种特殊的机制来解决这类冲突,避免同一数据对象由多个线程在同一时间访问. ...

  9. Word文件交换的电脑打开字体、排版变化的原因和解决方法!

    方案: 有时候.我们好不easy用Word写好文档,做好排版发给别人,别人会告诉你格式怎么是乱的啊,标题.正文.页眉页脚什么的格式都变了. 想尽各种办法都没能得到解决,那么出现这样的情况的原因究竟是什 ...

  10. 3Dmax+blend+WPF综合运用

    原文:3Dmax+blend+WPF综合运用 赛后总结 本人小菜,WPF刚入门,只是写一下最近的项目心得.欢迎各位前辈们前来拍砖指正,感激不敬!先申明,小弟我入门仓促,很多东西也是一知半解,所以很多问 ...