持久化类百度百科

http://baike.baidu.com/link?url=gNus-8jhK0Mi401aIR-16YUAnWKzOJfeMagUV8_t5iG8235JyjMrmZPd7rIT35KyqbFHnnvlntYXhmt9tm-d4NnplTjPXTEAHO-QbbahHXXjwuAcxBGq1ZwoAzPVHY-X

  1. 首先持久化作用是将程序数据在持久状态和瞬时状态间转换的机制。即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
  2.  
  3. 一般来说,持久化类(persistent class):可以被hibernate保存到数据库,并且从数据库读取的类。
    持久化类:是指其实例需要被Hibernate持久化到数据库中的类。持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和setXXX()方法。而持久化对象就是把对象保存至数据库或者文件中。
    区别就是:持久化类是能够实现持久化的类-也就是该类符合JavaBean的规范和持久化标准的一些操作。而持久化对象就是:持久化类的实例对象,并且将至保存到数据库或者文件中。
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  4. <hibernate-configuration>
  5. <session-factory>
  6. <!--数据库连接 -->
  7. <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  8. <property name="hibernate.connection.password"></property>
  9. <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost::orcl</property>
  10. <property name="hibernate.connection.username">test0816</property>
  11. <!--数据库方案 -->
  12. <property name="hibernate.default_schema">TEST0816</property>
  13. <!--数据库方言 -->
  14. <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
  15. <!--调试-->
  16. <property name="hibernate.show_sql">true</property>
  17. <property name="hibernate.format_sql">true</property>
  18. <!--自动建表方式 -->
  19. <property name="hibernate.hbm2ddl.auto">update</property>
  20. <!--映射文件 -->
  21. <mapping resource="com/hanqi/entity/User.hbm.xml"/>
  22. </session-factory>
  23. </hibernate-configuration>
  1. package com.hanqi.test;
  2.  
  3. import static org.junit.Assert.*;
  4.  
  5. import java.util.Date;
  6.  
  7. import org.hibernate.Session;
  8. import org.hibernate.SessionFactory;
  9. import org.hibernate.Transaction;
  10. import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
  11. import org.hibernate.cfg.Configuration;
  12. import org.hibernate.service.ServiceRegistry;
  13. import org.junit.After;
  14. import org.junit.Before;
  15. import org.junit.Test;
  16.  
  17. import com.hanqi.entity.User;
  18.  
  19. public class Test01 {
  20.  
  21. private Session se=null;
  22. private SessionFactory sf=null;
  23. private Transaction ts=null;
  24. //定义特殊方法
  25. //在测试用例方法被执行之前自动执行的方法
  26. //一般用来初始化公用的对象
  27. //前置方法
  28. @Before
  29. public void init()
  30. {
  31. //1获取配置文件
  32. Configuration cfg=new Configuration().configure();
  33. //2注册配置
  34. ServiceRegistry sr=new StandardServiceRegistryBuilder()
  35. .applySettings(cfg.getProperties()).build();
  36. //3获取SessionFactory (相当于jdbc的连接connection)
  37. sf=cfg.buildSessionFactory(sr);
  38. System.out.println(sf);
  39.  
  40. //4产生Session 保存 跟jsp session没关系 叫会话而已 真正干活的
  41. se=sf.openSession();
  42.  
  43. //5启动事务
  44. ts=se.beginTransaction();
  45. }
  46.  
  47. //后置方法
  48. //一般用来释放资源
  49. @After
  50. public void destory()
  51. {
  52. //7提交事务
  53. ts.commit();//提交事务,不然没有真正的放到数据库 在这里执行了insert语句才写进数据库
  54.  
  55. //8释放资源
  56. se.close();
  57. sf.close();
  58. }
  59.  
  60. //测试Hibernate连接
  61.  
  62. @Test
  63. public void test() {
  64.  
  65. //6操作数据库
  66. //添加数据
  67.  
  68. //实例化新对象,处于临时状态
  69. User u1=new User();
  70. u1.setBirthday(new Date());//创建当地时间
  71. u1.setMoney();
  72. u1.setPassword("");
  73. u1.setUserName("测试1");
  74. //u1.setUserID(2);//自然主键
  75.  
  76. //保存数据
  77. //通过save方法把对象从临时状态转成持久化状态
  78. se.save(u1);//不用操心insert语句,但不在这执行语句,也会有主键,hibernate自动生成
  79. System.out.println(u1);
  80.  
  81. }
  82.  
  83. //测试查询
  84. @Test
  85. public void test1()
  86. {
  87. //查询数据 查一个
  88. //提供2个参数
  89. //需要返回哪一个持久化类的实例
  90. //实例的标识(数据的主键值)
  91. //通过session的get方法获得的对象处于持久化状态
  92. User u2=(User)se.get(User.class,);//User类 主键是3
  93. System.out.println(u2);
  94.  
  95. //修改数据
  96. User u3=(User)se.get(User.class,);//User类 主键是3
  97. u3.setUserName("修改");
  98. System.out.println(u3);
  99.  
  100. //删除
  101. //se.delete(u2);//使持久化对象进入删除状态
  102.  
  103. }
  104.  
  105. @Test
  106. public void test2()
  107. {
  108. User u1=(User)se.get(User.class,);//立即加载数据
  109. System.out.println("get后");
  110. System.out.println("u1="+u1);
  111. User u2=(User)se.get(User.class,);
  112. System.out.println("u2="+u2);
  113. }
  114.  
  115. public void test3()
  116. {
  117. User u1=(User)se.load(User.class, );//延时加载数据
  118. System.out.println("load后");
  119. System.out.println("U1="+u1);//当要使用时才能加载
  120. }
  121.  
  122. //测试游离状态
  123. @Test
  124. public void test4()
  125. {
  126. //得到持久化状态的对象
  127. User u1=(User)se.get(User.class, );
  128. System.out.println("u1="+u1);
  129. se.close();//关闭游离状态
  130.  
  131. //使u1进入游离状态
  132. u1.setUserName("测试游离456");
  133. //把OID置成null
  134. u1.setUserID(null);//把实体类的类型改为Integer
  135. System.out.println("重新创建Session和事务...");
  136.  
  137. //重新创建Session,再使session回来
  138. se=sf.openSession();
  139. //重新开启事务 事务se.close()之前已经关了
  140. ts=se.beginTransaction();
  141.  
  142. se.saveOrUpdate(u1);//自动判断是save还是update 为空是添加,有的话修改
  143. }
  144.  
  145. }
  1. package com.hanqi.entity;
  2.  
  3. import java.util.Date;
  4.  
  5. //持久化类 实体化类
  6. //不需要使用final终态
  7. public class User {
  8.  
  9. private Integer userID;//Integer包装类 可以为null int不可以
  10. private String userName;
  11. private Date birthday;
  12. private double money;
  13. private String password;
  14.  
  15. public String getPassword() {
  16. return password;
  17. }
  18. public void setPassword(String password) {
  19. this.password = password;
  20. }
  21. public Integer getUserID() {
  22. return userID;
  23. }
  24. public void setUserID(Integer userID) {
  25. this.userID = userID;
  26. }
  27. public String getUserName() {
  28. return userName;
  29. }
  30. public void setUserName(String userName) {
  31. this.userName = userName;
  32. }
  33. public Date getBirthday() {
  34. return birthday;
  35. }
  36. public void setBirthday(Date birthday) {
  37. this.birthday = birthday;
  38. }
  39. public double getMoney() {
  40. return money;
  41. }
  42. public void setMoney(double money) {
  43. this.money = money;
  44. }
  45.  
  46. public User(Integer userID, String userName, Date birthday, double money, String password) {
  47. super();
  48. this.userID = userID;
  49. this.userName = userName;
  50. this.birthday = birthday;
  51. this.money = money;
  52. this.password = password;
  53. }
  54.  
  55. @Override
  56. public String toString() {
  57. return "User [userID=" + userID + ", userName=" + userName + ", birthday=" + birthday + ", money=" + money
  58. + ", password=" + password + "]";
  59. }
  60. //必须包含无参的构造方法
  61. //因为需要用到反射 反射要求是构造无参实例
  62. public User() {
  63. super();
  64. }
  65.  
  66. }
  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 -- :: by Hibernate Tools 3.4..CR1 -->
  5. <hibernate-mapping>
  6. <class name="com.hanqi.entity.User" table="T_USER">
  7. <id name="userID" type="int">
  8. <column name="USERID" />
  9. <generator class="native" />
  10. </id>
  11. <property name="userName" type="java.lang.String">
  12. <column name="USERNAME" length="" not-null="true"/>
  13. </property>
  14. <property name="birthday" type="java.util.Date">
  15. <column name="BIRTHDAY" sql-type="DATE" />
  16. </property>
  17. <property name="money" type="java.lang.Double">
  18. <column name="MONEY" length="" scale="" default=""/>
  19. </property>
  20. <property name="password" type="java.lang.String">
  21. <column name="PASSWORD" length=""/>
  22. </property>
  23. </class>
  24. </hibernate-mapping>

框架 Hibernate 2的更多相关文章

  1. 框架Hibernate笔记系列 基础Session

    标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...

  2. 持久化框架Hibernate 开发实例(一)

    1 Hibernate简介 Hibernate框架是一个非常流行的持久化框架,其中在web开发中占据了非常重要的地位, Hibernate作为Web应用的底层,实现了对数据库操作的封装.HIberna ...

  3. 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化

    准备工作 在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程.本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernat ...

  4. java 三大框架 hibernate部分知识实现增删该查操作

    1.三层架构    表现层 web层(MVC是一个表现层的设计模型)    业务层 service层    持久层 dao层2.三大框架和三层架构的关系(建议学习三大框架的顺序:先学习hibernat ...

  5. 三大框架-Hibernate

    概念 持久化框架 把对象保存到数据库中,对数据的CURD操作 ORM框架 ORM对象关系映射 类<->表 属性<->字段 对象<->表中的记录 实现方法 创建持久化 ...

  6. 持久化框架Hibernate 开发实例(二)

    1 简述 通过使用Hibernate框架,开发者可以使用面向对象的方式来进行数据库访问,从而取代 以前使用JDBC进行数据库访问的方式.通过使用Hibernate框架,web应用可以通过面向 对象的方 ...

  7. ORM框架Hibernate (一) 对DAO封装和抽象

    说明 前面已经给大家介绍了Struts这个框架,Struts是对Web项目的表示层进行了封装,而Hibernate是对Web项目中DAO层进行封装,也即是.NET中我们常用到的D层封装,即对访问数据库 ...

  8. Java ssh 框架 hibernate 详细理解

    Hibernate框架技术相信对大多数的 java 程序员并不陌生,数据表之间的关系如何通过Hibernate来建立,需要我们认真的分析数据表中数据项之间的交互: 数据库表的之间的关系有: (1)一对 ...

  9. [ SSH框架 ] Hibernate框架学习之二

    一.Hibernate持久化类的编写规范 1.什么是持久化类 Hibernate是持久层的ORM影射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么 ...

  10. [ SSH框架 ] Hibernate框架学习之三

    一.表关系的分析 Hibernate框架实现了ORM的思想,将关系数据库中表的数据映射成对象,使开发人员把对数据库的操作转化为对对象的操作,Hibernate的关联关系映射主要包括多表的映射配置.数据 ...

随机推荐

  1. Bash拾遗:变量

    使用引号包裹变量 在<高级Bash脚本编程指南>中的4.1节中有这么个例子: hello="A B C D" echo $hello # A B C D echo &q ...

  2. [翻译]Review——How JavaScript works:The building blocks of Web Workers

    原文地址:https://blog.sessionstack.com/how-javascript-works-the-building-blocks-of-web-workers-5-cases-w ...

  3. SPOJ:LCS2 - Longest Common Substring II

    题面 给定一些字符串,求出它们的最长公共子串 输入格式 输入至多 \(10\) 行,每行包含不超过 \(100000\)个的小写字母,表示一个字符串 输出格式 一个数,最长公共子串的长度 若不存在最长 ...

  4. VMware虚拟机上配置CentOS联网

    转自https://www.cnblogs.com/cindy-cindy/p/6784536.html 1.首先保证虚拟机的网络适配器为NAT模式 2.设置虚拟机的“编辑”-->“虚拟网络编辑 ...

  5. [转]开源日志库<log4cplus+VS2008使用>整理

    转 开源日志库<log4cplus+VS2008使用>整理 转http://pyhcx.blog.51cto.com/713166/143549 一.简介     log4cplus是C+ ...

  6. 前端单元测试环境搭建 Karma Jasmine

    Karma 官网On the AngularJS team, we rely on testing and we always seek better tools to make our life e ...

  7. Selenium+java项目测试问题整理

    一.页面跳转到另一链接 问题描述:打开页面链接为A.com,但是页面元素需跳转到链接B.com.这时B页面将无法识别该元素,导致拨错 解决方案:重新自定义驱动,打开新链接 (PS:比较笨的解决方法,但 ...

  8. mysql中int、bigint、smallint 和 tinyint的区别与长度的含义【转】

    最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容, ...

  9. Angular架构概览(截取部分)

    原文链接:https://angular.cn/docs/ts/latest/guide/architecture.html 我们是这样写 Angular 应用的:用 Angular 扩展语法编写 H ...

  10. Asp.Net MVC Identity 2.2.1 使用技巧(五)

    创建用户管理相关视图 1.添加视图 打开UsersAdminController.cs   将鼠标移动到public ActionResult Index()上  右键>添加视图   系统会弹出 ...