【SSH框架】--Hibernate入门


    参考数书籍:轻量级Java EE企业应用实战(第4版)
    Hibernate是轻量级Java EE应用的持久化层解决方案。它不仅管理Java类到数据库表的映射,还提供了数据查询和获取数据的方法,可以大幅度缩短处理数据持久化的时间。Hibernate充当了面向对象的程序设计语言和关系数据库之间的桥梁,允许程序开发者采用面向对象的方式来操作数据库。

    ORM和Hibernate:ORM(Object Relation Mapping)-对象关系数据库映射。ORM完成面向对象的编程语言到关系数据库的映射。

    开源O/R映射框架:


   因为有了Hibernate的支持,使得Java EE 应用的OOAOODOOP一体化。

 

优点:1、开源和免费的License.

        2、轻量级封装,生产力提高,容易调试。

          3、使开发更加对象化(阻抗不匹配)

        4、可移植性。

        5 没有侵入型,支持透明持久化

缺点:1、封装的太彻底,使用数据库特性语句,很难调优。

        2、对大批量数据更新存在问题。

        3、系统中存在大量的统计查询功能

下面通过一个实例来学习Hibernate:

       创建一个Java项目

       创建一个UserLibraries,加入依赖包:HIBERNATE_HOME/lib/*.jar

                                                   HIBERNATE_HOME/hibernate3.jar

                                                   加入数据库驱动(MySql驱动)

       提供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>
		<!-- 指定连接数据库所用的驱动 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 指定连接数据库的url,其中test_hibernate是本应用连接的数据库名,我这里和我的项目名称一样 -->
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test_hibernate</property>
		<!-- 指定连接数据库的用户名 -->
		<property name="hibernate.connection.username">root</property>
		<!-- 指定连接数据库的密码 -->
		<property name="hibernate.connection.password">root</property>
		<!-- 指定数据库方言 -->	
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- 显示Hibernate持久化操作所生成的SQL -->
		<property name="hibernate.show_sql">true</property>
		<!--将SQL脚本进行格式化后再输出 -->
		<property name="hibernate.format_sql">true</property>
		<!-- 罗列所有持久化类的类名 -->
		<mapping resource="com/lf/zym/hibernate/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

       建立实体类User.java

package com.lf.zym.hibernate;

import java.util.Date;
/*
 * User实体类
 */
public class User {
	//ID
	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 Date getExpireTime() {
		return expireTime;
	}
	public void setExpireTime(Date expireTime) {
		this.expireTime = expireTime;
	}
	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;
	}	
}

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

       将User.hbm.xml文件加入到hibernate.cfg.cml文件中:上边的代码中已经加入到了文件中。

       编写工具类ExportDB.java,将hbm生成ddl.也就是hmb2ddl

package com.lf.zym.hibernate;

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

/*
 * 将hbm导出生成ddl
 */
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);
	}
}

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

package com.lf.zym.hibernate;

import java.util.Date;

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

public class Client {

	/**
	 * @param args
	 */
	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.close();
				}
			}
		}
		
	}
}

      当Java程序以面向对象的方式来操作持久化对象时,Hibernate负责将这种操作转换为底层SQL操作。所有,当程序运行结束后,可以看到Hibernate数据库中增加了一个User表。  



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值