第一个hibernate程序

一、hibernate介绍

1、什么是Hibernate?

数据持久层的框架有很多比如:iBATIS,myBatis,Nhibernate,Siena等等。Hibernate是用面向对象的思想来操作数据库的数据持久层的一个轻量级框架,并且Hibernate是一个开源的orm(Object relations mapping)框架,提供了查询获取数据的方法,节省了我们开发处理数据的时间。

2、Hibernate的优点

1)、使用简洁的hql语句(Hibernate query language)。可以不使用传统的insert,update等sql语句。比如insert一个对象,原来的做法是:insert into 表名称 alue(值1,值2,值3,……),而现在的做法是:save(对象)。

2)、使用orm映射。对象到关系数据库之间的映射。是从对象的角度操作数据库,再次体现了面向对象思想。原来的实体抽取方法:首先有了表,然后表映射实体对象。而现在Hibernate做法是:直接由对象映射到表。

3)、没有侵入性,移植性比较好。什么是没有侵入性?就是Hibernate采用了pojo对象。所谓的pojo对象就是没有继承Hibernate类或实现Hibernate接口。这样的话,此类就是一个普通的java类,所以移植性比较好。

4)、支持透明持久化。透明是针对上层而言的。三层架构的理念是上层对下层的依赖,只是依赖接口不依赖具体实现。而Hibernate中的透明是指对业务逻辑层提供了一个接口session,而其他的都封装隐藏。持久化是指把内存中的数据存放到磁盘上的文件中。

3、深度理解一下Hibernate

1)、Hibernate是对JDBC进一步封装

没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理。使用了Hibernate封装了JDBC,不再需要操作数据,直接操作Hibernate就行了。

2)、Hibernate是开源的一个ORM(对象关系映射)框架

ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。

3)、代码分层

典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。



二、hibernate环境搭建

1、下载hibernate相关jar包,hibernate基于eclipse的插件

http://hibernate.org/orm/downloads/
http://tools.jboss.org/downloads/jbosstools/neon/4.4.2.Final.html#zips
注意:插件下载时需要与eclipse版本对应。

2、导入hibernate相关jar包,安装hibernate基于eclipse的插件



三、第一个hibernate程序

先配置hibernate的hibernate.cfg.xml配置文件,相应代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory >
  <!-- 设置数据库驱动 -->
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <!-- 设置数据库URL -->
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
  <!-- 数据库用户名 -->
  <property name="hibernate.connection.username">root</property>
  <!-- 数据库密码 -->
  <property name="hibernate.connection.password">123456</property>
   <!-- 指定ddl的生成方式 -->
  <property name="hibernate.hbm2ddl.auto">create</property>

  <mapping resource="com/lhb/HibernateText/model/User.hbm.xml"/>
 </session-factory>
</hibernate-configuration>


其中的<mapping resource="com/lhb/HibernateText/model/User.hbm.xml"/>表示映射文件

创建Model类,相应代码如下:

package com.lhb.HibernateText.model;

public class User {
	private int id;
	private String userNme;
	private String password;

	public User() {

	}

	public User(int id, String userNme, String password) {

		this.id = id;
		this.userNme = userNme;
		this.password = password;
	}

	public User(String userNme, String password) {

		this.userNme = userNme;
		this.password = password;
	}

	public int getId() {
		return id;
	}

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

	public String getUserNme() {
		return userNme;
	}

	public void setUserNme(String userNme) {
		this.userNme = userNme;
	}

	public String getPassword() {
		return password;
	}

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

	@Override
	public String toString() {
		return "Urse [id=" + id + ", userNme=" + userNme + ", password=" + password + "]";
	}
}
配置映射文件,将hibernate和Model类关联起来,代码如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-1-9 9:28:56 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
	<class name="com.lhb.HibernateText.model.User" table="USER">
		<id name="id" type="int">
			<column name="ID" />
			<generator class="assigned" />
		</id>
		<property name="userNme" type="java.lang.String">
			<column name="USERNME" />
		</property>
		<property name="password" type="java.lang.String">
			<column name="PASSWORD" />
		</property>
	</class>
</hibernate-mapping>
创建一个测试类,检测hibernate是否能运行成功,测试类使用eclipse自带的单元测试JUnit。 使用了 hibernate的核心接口,另附博文阐述。 相关代码如下:

package com.lhb.HibernateText.model;

import static org.junit.Assert.*;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class UserTest {

	SessionFactory sessionFactory;
	Transaction transaction;
	Session session;

	@Before
	//该方法运行在Text测试之前
	public void setUp() throws Exception {
		// 读取hibernate.cfg.xml文件
		Configuration config = new Configuration().configure();
		ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties())
				.build();
		// 建立SessionFactory
		sessionFactory = config.buildSessionFactory(serviceRegistry);
		session = sessionFactory.openSession();
		transaction = session.beginTransaction();
	}

	@After
	//该方法运行在Text测试之后
	public void tearDown() throws Exception {
		transaction.commit();
		session.close();
		sessionFactory.close();
	}

	@Test
	public void test() {
		User user = new User(1002, "admin", "123456");
		session.save(user);
	}

}
数据库运行结果:



测试成功。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值