好久都不曾写写总结一些东西了,惰性真的是令人难以克制!虽然和许多北漂族一样,艰苦而又迷茫,但是我总能找到一些方向,一点期盼,因为你就我的目标。我会坚持下去,重拾青春的热血,既然人生如戏,那我不当猪脚。我要当导演!
 
Action!
 
在eclipse的market中安装hibernate tools插件
 
测试是否安装成功
这里我们采用的hibernate Jar包是hibernate-release-4.2.4.Final版本的(lib中有required必备包)
其他jar包如junit和mysql驱动包直接配置到eclipse的userlib中即可(新建一个java project并配置以上内库即可)
 
1.创建hibernate配置文件(自动提示需要配置对应的dtd文档支持)
     在以下的文件中寻找(hibernate-release-4.2.4.Final\project\hibernate-core\src\main\resources\org\hibernate\hibernate-mapping-3.0.dtd)
     新建一个Hibernate Configuration File(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. <hibernate-configuration>
  6. <session-factory>
  7. <property name="connection.username">root</property>
  8. <property name="connection.password">root</property>
  9. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  10. <!-- 三个斜杠为简写方式 -->
  11. <property name="connection.url">jdbc:mysql:///hibernate?userUnicode=true&amp;
  12. characterEncoding=UTF-8</property>
  13. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  14.  
  15. <property name="show_sql">true</property>
  16. <property name="format_sql">true</property>
  17.  
  18. <!-- 生成表结构策略 -->
  19. <!--create:表示启动的时候先drop,再create
  20. create-drop: 也表示创建,只不过再系统关闭前执行一下drop
  21. update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新
  22. validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新
  23. -->
  24. <property name="hbm2ddl.auto">update</property>
  25.  
  26. <!-- 默认的数据库 -->
  27. <property name="hibernate.default_schema">hibernate</property>
  28. </session-factory>
  29. </hibernate-configuration>
2.新建一个持久化类Students(JavaBean设计原则 1.公有类 2.提供不带参的共有的构造方法 3.属性必须私有 4.set、get方法封装)
3.创建对象-关系映射文件
     生成Students类对应配置如下:
  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  4. <!-- Generated 2016-11-12 23:40:02 by Hibernate Tools 3.4.0.CR1 -->
  5. <hibernate-mapping>
  6. <class name="Students" table="STUDENTS">
  7. <id name="sid" type="int">
  8. <column name="SID" />
  9. <generator class="assigned" />
  10. </id>
  11. <property name="sname" type="java.lang.String">
  12. <column name="SNAME" />
  13. </property>
  14. <property name="gender" type="java.lang.String">
  15. <column name="GENDER" />
  16. </property>
  17. <property name="birthday" type="java.util.Date">
  18. <column name="BIRTHDAY" />
  19. </property>
  20. <property name="address" type="java.lang.String">
  21. <column name="ADDRESS" />
  22. </property>
  23. </class>
  24. </hibernate-mapping>
     将Student.hbm.xml配置到hibernate.cfg.xml中
  1. <session-factory>
  2. ...
  3. <mapping resource="Students.hbm.xml"/>
  4. </session-factory>
     新建数据库(Student)
4.利用Junit,通过hibernate API编写访问数据库代码
  1. import java.util.Date;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.Transaction;
  5. import org.hibernate.cfg.Configuration;
  6. import org.hibernate.service.ServiceRegistry;
  7. import org.hibernate.service.ServiceRegistryBuilder;
  8. import org.junit.After;
  9. import org.junit.Before;
  10. import org.junit.Test;
  11.  
  12. public class StudentsTest {
  13. private SessionFactory sessionFactory;
  14. private Session session;
  15. private Transaction transaction;
  16.  
  17. @Before
  18. public void init() {
  19. //创建配置对象
  20. Configuration config = new Configuration().configure();
  21.  
  22. //创建服务注册对象
  23. ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(
  24. config.getProperties()).buildServiceRegistry();
  25.  
  26. //创建会话工厂对象
  27. sessionFactory = config.buildSessionFactory(serviceRegistry);
  28.  
  29. //回话对象
  30. session = sessionFactory.openSession();
  31.  
  32. //打开事物
  33. transaction = session.beginTransaction();
  34. }
  35.  
  36. @After
  37. public void destory() {
  38. transaction.commit();
  39. session.close();
  40. sessionFactory.close();
  41. }
  42.  
  43. @Test
  44. public void TestSaveStudents() {
  45. Students students = new Students(3, "小白", "男", new Date(), "武当山");
  46. session.save(students);
  47. }
  48. }

hibernate初涉的更多相关文章

  1. Java Hibernate和.Net EntityFramework 如何在提交事务之前 就拿到需要新增实体的Id

    在Hibernate中很容易做到这一点,因为hibernate在事务commit之前  还有一个save方法,这个save方法就可以持久化并且拿到Id. 但是EF并不可以呀,EF是将对象标记为新增状态 ...

  2. hibernate多对多关联映射

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  3. 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用

    问题: Springboot启动报错: Caused by: org.springframework.beans.factory.BeanCreationException: Error creati ...

  4. hibernate多对一双向关联

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  5. Hibernate中事务的隔离级别设置

    Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下

  6. Hibernate中事务声明

    Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...

  7. spring applicationContext.xml和hibernate.cfg.xml设置

    applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...

  8. [原创]关于Hibernate中的级联操作以及懒加载

    Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...

  9. hibernate的基本xml文件配置

    需要导入基本的包hibernate下的bin下的required和同bin下optional里的c3p0包下的所有jar文件,当然要导入mysql的驱动包了.下面需要注意的是hibernate的版本就 ...

随机推荐

  1. java中对象的转型

    1.对象的向上转型——将子类的对象赋值给父类的引用 Student s=new Student();  Person p=s; 一个引用能够调哪些成员(变量和函数),取决于这个引用的类型  也就是Pe ...

  2. 01-android快速入门

    adb Android debug bridge 安卓调试桥 创建模拟器,屏幕尽量小些,启动速度运行速度快 Android项目的目录结构 Activity:应用被打开时显示的界面 src:项目代码 R ...

  3. Swift - 08 - 元组

    //: Playground - noun: a place where people can play import UIKit // 元组就是将多个不同的值集合成一个数据 /* 元组是Object ...

  4. Landsat元数据批量下载工具

    目录 前言 landsat数据情况简介 下载元数据 总结 一.前言        最近由于工作需要,需要下载部分landsat数据的元数据,老板大手一挥,给了十几年的landsat的path.row以 ...

  5. 重拾C++ 基础知识总结(二)

    1.标准库string类型: 用户程序要使用string类型对象,必须包含相关头文件 #include <string> 字符串字面值与标准库string类型不是同一种类型,字符串字面值是 ...

  6. linux文件系统结构和权限

    linux文件系统的目录结构 熟话说的好,好记性不如烂笔头,虽然没用笔,但动动手指还是可以的.下面的目录结构都是摘抄过来的,动动手指来加深下印象吧,还能练习下打字速度,哈哈,多好啊. ...突然又改变 ...

  7. 各种driver的继承关系

    AndroidDriver extends AppiumDriver extends DefaultGenericMobileDriver extends RemoteWebDriver

  8. jquery实现页面置顶功能代码

    <html> <head> <title></title><script type='text/javascript> //回到顶部功能 f ...

  9. Chrome 中的 JavaScript 断点设置和调试技巧 (转载)

    原文地址:http://han.guokai.blog.163.com/blog/static/136718271201321402514114/ 你是怎么调试 JavaScript 程序的?最原始的 ...

  10. Scut 进阶:Schema 自动检测

    Scut 在启动时有一个自动根据代码中数据类型检查数据库字段的功能,要如何使用呢? 脚本引擎动态加载 ModelAssembly: ScriptEngine.cs - InitScriptRuntim ...