hibernate学习之二——部署(简单实例)
来源:互联网 发布:淘宝放心淘加入条件 编辑:程序博客网 时间:2024/05/22 08:07
对象关系映射(Object Relational Mapping,简称 ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
一,ORM概念
简单的说, ORM 是通过使用描述对象和数据库之间映射的元数据,将 java 程序中的对象自动持久化到关系数据库中。
二,实例
hibernate的部署:
1、导入hibernate的jar包
2、创建Hibernate的配置文件 hibernate.cfg.xml
3、创建JavaBean(POjo)的映射文件 User.hbm.xml
4、在配置文件中添加映射文件的配置
5、声明Hibernate工具类
i)提取共用性的代码,即获取SessionFactory
ii)保存SessionFactory只会被创建一次
6、声明测试类
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- 数据库的连接配置 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/test</property><property name="connection.username">root</property><property name="connection.password">123456</property><!-- SQL 方言 --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- hibernate中session对象的管理模式 --><property name="current_session_context_class">thread</property><!-- hibernate中sql语句的设置(是否在控制台输出SQL语句) --><property name="show_sql">true</property><!-- database自动创建 --><property name="hbm2ddl.auto">update</property><!-- 映射文件的配置 --><mapping resource="com/bean/User.hbm.xml" /></session-factory></hibernate-configuration>User.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><!-- 映射User类 --><!-- class标签:name :类名(包括包路径)table :对应的数据库中表名 --><class name="com.bean.User" table="user"><!-- 在每一个class标签内,都必须有一个id子标签 --><!-- 用来映射表中的主键,即:在hibernate中,每一个表必须有一个主键 --><!-- name:javaBean类中用于映射表中主键的属性column :表中主键的名称 --><id name="uid" column="Uid"></id><!-- 映射普通的列 --><property name="name" column="Name"></property><property name="age" column="Age"></property></class></hibernate-mapping>
Test.java
package com.test;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class Test {public static void main(String[] args) {//1,解析配置文件Configuration config = new Configuration();//参数为空时默认解析 hibernate.cfg.xmlConfiguration conf = config.configure("hibernate.cfg.xml");//2,获取sessionFactorySessionFactory sessionfactory = conf.buildSessionFactory();//3,根据sessionFactory获取session对象Session session = sessionfactory.openSession();//4,查询user表 HQL语句//这里的User是bean,小写user会报错Query query = session.createQuery("from User");List list = query.list();System.out.println(list);//5,关闭资源session.close();}}
SessionFactory非常消耗资源,在整个应用中,建议只获取一次,不要频换的关闭、打开,使用单例模式进行优化
1,静态的 私有的 自身类的属性
2,私有的构造方法
3,公共的 静态的 获得实例的方法
无论产生多少个对象,我们只实例化一次,这样的设计在设计模式上称为单态设计模式
* 单态设计模式的意义:
实际上这种模式非常常用,windows操作系统中就使用了此设计模式,windows中用一个回收站:
除了桌面以外,其他的每个硬盘中都有一个回收站,其他的回收站和其他硬盘的每个回收站都是同一个,
也就是所整个操作系统中有且只有一个回收站,各个地方只是引用此实例。
HbmUtil.java
package com.util;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HbmUtil {//单例模式三步骤//1,静态的 私有的 自身类的属性private static SessionFactory sessionfactory = buildSessionFactory();//2,私有的构造方法private HbmUtil(){}//3,公共的 静态的 获得实例的方法public static SessionFactory buildSessionFactory(){//解析文件Configuration config = new Configuration();//指定解析文件Configuration conf = config.configure("hibernate.cfg.xml");//获取sessionFactoryreturn conf.buildSessionFactory();}public static SessionFactory getSessionFactory(){return sessionfactory;}}
package com.test;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import com.util.HbmUtil;public class Test {public static void main(String[] args) {SessionFactory sessionfactory = HbmUtil.getSessionFactory();Session session = sessionfactory.openSession();//4,查询user表 HQL语句//这里的User是bean,小写user会报错Query query = session.createQuery("from User");List list = query.list();System.out.println(list);//5,关闭资源session.close();}}三, 运行过程
1) 应用程序先调用 Configuration 类,该类读取 Hibernate 配置文件及映射文件中的信息,并用这些信息生成一个 SessionFactory 对象
2) 从 SessionFactory 对象生成一个 Session 对象
3) 用 Session 对象生成 Transaction 对象
4) 可 通 过 Session 对 象 的 get(),load(),save(),update(),delete() 和saveOrUpdate()等方法对 POJO 类进行加载、保存、更新、删除、等操作;
5) 在查询的情况下,可通过 Session 对象生成一个 Query 对象,然后利用 Query 对象执行查询操作;如果没有异常,Transaction 对象将提交这些操作到数据库中。
- hibernate学习之二——部署(简单实例)
- 一个简单的hibernate实例(之二)
- Hibernate学习笔记(一)——简单的Hibernate实例入门
- Hibernate(二):Hibernate搭建开发环境+简单实例
- Hibernate学习笔记(二)——创建一个简单的Hibernate项目
- Hibernate学习篇06——onetomany简单实例
- Hibernate学习篇07——manytoone简单实例
- 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)
- 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)
- 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)
- 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)
- 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)
- 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二)
- Hibernate搭建开发环境+简单实例(二)
- Hibernate搭建开发环境+简单实例(二)
- Hibernate搭建开发环境+简单实例(二)
- Hibernate搭建开发环境+简单实例(二)
- Hibernate实战数据持久化之二hibernate简单的入门实例
- assets文件夹资源的访问
- 山东大学项目实训——6月8日
- 好看的颜色代码
- c++-02
- 传统问题集一
- hibernate学习之二——部署(简单实例)
- js清除浏览器客户端缓存的几种方法
- SpringApplicationContextHelper初始化context失败
- 多线程相关概念汇总
- bsgrid动态表头(动态列)
- 关于JAVA多态性的理解
- 页面的静态huan
- 微信服务器在填写服务器的配置返回token验证失败
- 程序问题,就没有解决不了的问题,show me source code