深入浅出--Hibernate

话说从大二开始接触SSH三大框架,但当时能力实在是有限,没有继续研究下去。现在趁着对Java的痴迷劲,立马旧事重提,重新学习SSH。咱们先从SSH中的Hibernate说起。

也许你会问,为什么要发明Hibernate呢?其实什么新生事物的出现都是有原因的,如果没有Hibernate的ORM思想,java程序员必须精通数据库语言,只有这样才能完成项目开发。Hibernate创始人Gavin King突破了这种约束,让对象和实体之间建立映射,我们通过操作java中的对象就能完成对数据库的操作。听起来很神秘吧,让我用一个小Demo来向大家详细讲解。

要搭建Hibernate工作的环境,我们要引入相关的jar包,由于我们是初学者,所以建议把jar包都引入,jar包下载地址:http://pan.baidu.com/s/1pJi9XOn。下图是Hibernate实例的文件目录。

我们要做的是建立实体User.java,使其和数据表T_User建立映射,通过操作User.java完成对数据表T_User的操作。User.java的源码如下:

package com.entity;  

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;
    }
}

User.hbm.xml文件是映射文件,通过它建立User.java和T_User表的映射关系,代码如下:

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

hibernate.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>
	   <!-- 连接SQL Server的方言-->
	   <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
	   <!-- 连接SQL Server的数据库名-->
       <property name="connection.url">jdbc:sqlserver://127.0.0.1:1433;database=test</property>
       <!-- 连接SQL Server的用户名-->
       <property name="connection.username">sa</property>
       <!-- 连接SQL Server的密码-->
       <property name="connection.password">123456</property>
       <!-- 连接SQL Server的驱动程序-->
       <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
       <!-- 配置映射文件的路径-->
       <mapping resource="com/entity/User.hbm.xml" />
	</session-factory>
</hibernate-configuration> 

Client.java控制User.java,使其向T_User表写入数据,代码如下:

package test;

import java.util.Date;

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

import com.entity.User;

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("NAME1");
			user.setPassword("PWD1");
			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();
				}
			}
		}
	}
}

T_User表的数据结构如下:

查看T_User表,观察操作是否成功,效果图如下:

源码下载地址如下:http://pan.baidu.com/s/1nt4sIVZ

经过两天的刻苦专研,终于完成了Hibernate的第一个Demo,收获颇多。不过这只是个开始,Hibernate的神奇之处还多的很,我会继续《深入浅出--Hibernate》的博客,和大家一同进步。

深入浅出--Hibernate

时间: 2024-12-14 01:33:23

深入浅出--Hibernate的相关文章

深入浅出Hibernate(二)多对一关系映射

学习Hibernate是为了更方便的操作数据库,在数据库中的关系模型中存在多对一的关系,比如下图所示的员工和部门之间的关系,那么这种关系在Hibernate中如何映射呢?让我用一个小Demo来详细讲解. 建立映射分为以下几步: 1.设计domain对象Department.Employee,代码如下: package cn.itcast.hibernate.domain; public class Department { private int id; private String name;

深入浅出hibernate 学习

这本书也买了好久,一直没有看,最近用到hibernate,重新看下: 1.持久层介绍 2.cfg.xml配置 3.O/R映射 基本类型 自定义映射 复合主键 Blob Clob 4.数据关联 1--n n--1 1--1 n--n ---------------------------------- 深入浅出hibernate 学习

SSH深度历险(一)深入浅出Hibernate架构(一)-------映射解析——七种映射关系

        ORM.全称是(Object Relational Mapping),即对象关系映射.ORM的实现思想就是将关系数据库中表的数据映射成对象.以对象的形式展现.这样开发者就能够把对数据库的操作转化为对这些对象的操作.Hibernate正是实现了这样的思想,达到了方便开发者以面向对象的思想来实现对数据库的操作.    Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java).映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.

[Java面试八]Hibernate总结以及在面试中的一些问题.

1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码. ②.Hibernate 是一个基于JDBC的主流持久化框架,是一个优秀的ORM 实现.他很大程度的简化DAO层的编码工作 ③.hibernate 的性能非常好,因为它是个轻量级框架.映射的灵活性很出色.它支持各种关系数据库,从一对一到多对多的各种复杂关系. 开发流程 2.什么是延迟加载? 延迟加载机制是为了避免一

hibernate理解

hibernate书籍(建议:深入浅出hibernate,hibernate in action[hibernate实战]) 在学习hibernate之前老师带我理解的ORM: ORM是什么?ORM的主要用于做什么? 使用JDBC遇到的问题就是每次都得自己写实体类的Dao,每条SQL语句都得自己手动的书写,没有什么难度.完全就是浪费时间,因此需要使用框架 之所以存在这种ORM(Object Relation Mapping)对象关系映射框架是由于当前开发环境中支持的语言和数据库来决定的.现在开发

Atitit.hibernate体系结构大总结

1. 4.1 hibernate基础语义 80 4.1.1 configuration 80 4.1.2 sessionfactory 81 4.1.3 session 81 2. hibernate动态数据库配置,多数据库配置 作者::老哇的爪子Attilax艾龙,EMAIL:[email protected] 转载请注明来源: http://blog.csdn.net/attilax 3. hbm2ddl 4. C3p0 dbpool 5. Criteria( 推荐)  qbc 这种方式非常

hibernate里的inverse和cascade是什么区别

<set name="fb" cascade="all-delete-orphan" inverse="true" lazy="false"> <key> <column name="zb_id" not-null="true" /> </key> <one-to-many class="gov.gzgs.djrwtx.bo

如何系统学习java体系?

如何系统学习java体系? | 浏览:1248 | 更新:2013-08-26 14:56 | 标签:java 1 2 3 4 分步阅读 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,它在工业界应用非常广泛,掌握好java这门技术,你能轻松找一份java程序员的工作. 工具/原料 一些书.一台电脑 方法/步骤 学java首先你要学 J2SE,它是java体系的基础,也是重中之重.很多人往往不重视基础,其实这是舍本逐末的做法.说这么多就是希望大家能重视基础,能在这条路上走的更远.

总会有一个是你需要的

http://www.shouce.ren/post/d/id/112300 黑客攻防实战入门与提高.pdfhttp://www.shouce.ren/post/d/id/112299 黑客入门新手特训.pdfhttp://www.shouce.ren/post/d/id/112298 黑客与设计-剖析设计之美的秘密(彩印).pdfhttp://www.shouce.ren/post/d/id/112297 鸟哥的LINUX私房菜:服务器架设篇 (第二版).pdfhttp://www.shouc