Hibernate——以面向对象的思维操作关系数据库(一)

Hibernate是一个轻量级的ORM开源框架。Hibernate解脱了面对繁琐的JDBC的开发者,使得变成更加面向对象化,将之前的连接语句,增删改查等语句进行了很好的封装,使得业务逻辑等的编写更加的容易;使移植数据库也变得十分的容易,即根据不同的数据库配置configuration.cfg.xml就可以轻松改变数据库;下面以一个代码段稍作解释:

一 :每个相对应的实体都会有相对应的映射文件,映射文件的作用主要是维护实体间的关系。

实体类User:

package com.bjpowernode.hibernate;

import java.util.Date;

public class User {

	private String id;

	private String name;

	private String password;

	private Date createTime;

	private Date expireTime;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public Date getExpireTime() {
		return expireTime;
	}

	public void setExpireTime(Date expireTime) {
		this.expireTime = expireTime;
	}
}

映射文件:

<?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>
	<class name="com.bjpowernode.hibernate.User">
		<id name="id">
			<generator class="uuid"/>
		</id>
		<property name="name"/>
		<property name="password"/>
		<property name="createTime"/>
		<property name="expireTime"/>
	</class>
</hibernate-mapping>

将映射文件生成dll文件:

package com.bjpowernode.hibernate;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

/**
 * 将hbm生成ddl
 * @author Administrator
 *
 */
public class ExportDB {

	public static void main(String[] args) {

		//默认读取hibernate.cfg.xml文件
		Configuration cfg = new Configuration().configure();

		SchemaExport export = new SchemaExport(cfg);
		export.create(true, true);
	}
}

二 :在configuration.cfg.xml中配置基本信息,并将映射文件信息配置到configuration.cfg.xml中

configuration.cfg.xml配置文件:

<!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">bjpowernode</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.show_sql">true</property>
		<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

三:建立客户端类Client,添加用户数据到数据库

package com.bjpowernode.hibernate;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Client {

	public static void main(String[] args) {

		//读取hibernate.cfg.xml文件
		Configuration cfg = new Configuration().configure();

		//建立SessionFactory
		SessionFactory factory = cfg.buildSessionFactory();

		//取得session
		Session session = null;
		try {
			session = factory.openSession();
			//开启事务
			session.beginTransaction();
			User user = new User();
			user.setName("张三");
			user.setPassword("123");
			user.setCreateTime(new Date());
			user.setExpireTime(new Date());

			//保存User对象
			session.save(user);

			//提交事务
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			//回滚事务
			session.getTransaction().rollback();
		}finally {
			if (session != null) {
				if (session.isOpen()) {
					//关闭session
					session.close();
				}
			}
		}
	}
}

总结:上面只是一个小例子,但是从小例子中我们依稀可以感受到那种封装给我们带来的便捷了。

时间: 2024-10-05 20:17:14

Hibernate——以面向对象的思维操作关系数据库(一)的相关文章

Hibernate (面向对象的数据库操作)

JPA,java persistance api,java持久层接口,即与数据库打交道的一些接口.实现交给各个厂商去实现. ORM,Object/Relation Mapping,对象/关系数据库映射.面向对象的数据库操作,底层仍是sql语句. 获得 hibernate的maven依赖. <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactI

Hibernate(五)——面向对象查询语言和锁

Hibernate做了数据库中表和我们实体类的映射,使我们不必再编写sql语言了.但是有时候查询的特殊性,还是需要我们手动来写查询语句呢,Hibernate框架为了解决这个问题给我们提供了HQL(Hibernate  Query  Language)面向对象的查询语言,和QBC(Query by Criteria)完全面向对象的查询,这里简单总结一下如何是面向对象来编写ql语句呢.  一,HQL,Hibernate框架中的查询语言,是一种面向对象查询语言,和sql语句还是非常类似的,就是将sql

面向对象的思维方法

我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭,因为我早以习惯用C来编写程序,很欣赏C的简洁性和高效性,喜欢C简练而表达能力丰富的风格,特别忍受不了Java运行起来慢吞吞的速度,相对冗长的代码,而且一个很简单的事情,要写好多类,一个类调用一个类,心里的抵触情绪很强. 我对Java的面向对象的特性琢磨良久,自认为有所领悟,也开始有意识的运用OOP风格来写程序,然而还是经常会觉得不知道应该怎样提炼类,面对一个具体的问题的时候,会觉得脑子里千头万绪的,

如何用面向对象的思维去封装一个小型轮播图插件

1.面向对象与面向过程 既然说到面向对象的思维,那就免不了要对面向过程的编程思维与面向对象的思维做一番比较. 笔者有 一段时间天真的认为有一个类,然后new一个对象就是面向对象编程了,现在想想还是太naive了呀. 其实面向对象的编程思维和面向过程的编程思维重要的不是对象和过程,而是思维. 比如说在生活中我们要做一道西红柿炒鸡蛋,很多人的第一反应就是西红柿炒鸡蛋第一步.第二步.第三步应该怎么做,每一步放什么调料.然后在做的过程中找每一步需要的调料.这就是很典型的面向过程的思维方式:怎么做,需要什

用大白话扯扯那&quot;神奇&quot;的面向对象编程思维

前言: 每当提到面向对象的时候,初学者肯定都是一脸懵逼的状态,到底什么是面向对象?会用面向对象后有什么牛逼之处吗?不会用是不是就会死掉?答案肯定不会死掉,我们可以来简单的举一 个栗子 1.当你想到熊猫的时候你想到了什么? 答:"国宝" 2.当你看到"国宝"穿上衣服的时候你想到了什么名字? 答:"功夫熊猫"; 其实你可以理解成面向对象就是一种武功!你可以想象一下会武功和不会武功的人有什么区别?"走路带风.飞檐走壁.不食人间烟火.让妹子一看

12-11java面向对象之内部类操作

在本次博客之后,进行的就是面向对象的高级操作.何为高级呢?只是在基础之上的扩充,所以要把基础知识掌握牢固才有可能进一步提高.为了完成质疑任务,本周剩下的时间全部用来复习,温故而知新. 在开始主题内部类之前,先简单介绍一下代码块的基本概念. 1.代码块 在java中有的代码可以直接使用{}将代码括起来,主要包括一下几种: 1.普通代码块:直接在方法之中编写. //代码块的测试 public class Test { public static void main(String[] args) {

设计模式 之 面向对象(OO)思维

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 面向对象(OO)思维: 1. 考虑类 名词 2. 考虑属性 不可脱离具体的应用环境 3. 考虑方法 4. 考虑类之间的关系 5. 考虑隐藏(封装) 降低耦合度 6. 考虑继承 耦合度强,应该谨慎使用 7. 考虑多态 核心中的核心,多态带来了可扩展性. 多态有三个特性:1继承:2重写:3 父类的引用指向子类的对象 面向对象设计时需注意的问题: 1. 设计没有绝对的对与错 2.

(六)Hibernate的增删改查操作(2)

一.在Hibernate中使用原生SQL语句 sql语句面向的是数据库,所以sql语句中对应的不再是bean了,比如sql="select * from user"   在hql中*是无效的,但是在sql中可以使用,且user指的是数据库中的user表. 案例一: package action; import java.util.List; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.h

Hibernate(二)——POJO对象的操作

POJO对象其实就是我们的实体,这篇博客总结一下框架对POJO对象对应数据库主键的生成策略,和一些对POJO对象的简单增删改查的操作.  一,Hibernate框架中主键的生成策略有三种方式: 1,数据库负责生成主键(代理主键)  a,native:表示由设置的方言决定采用什么数据库生成主键方式,例如:在MySQL中会采用自增长的方式,主键字段必须都是整形类型:在Oracle数据库中,会采用序列的增长方式.  b,sequence:表示采用数据库的序列生成主键,适用于Oracle,DB2数据库中