新浪微博 Github

Hibernate入门

ORM:Object Relation Mapping;


阻抗不匹配:现在我们常用的编程语言都是面向对象的,而常用的数据库都是关系型数据库,而我们一般如果要用Java访问MySQL,都是使用JDBC,并且要在Java代码中写SQL语句,而这点是由于面向对象和关系融合的缺点;
而ORM框架就解决了这点;
Hibernate是ORM框架的一种;而Hibernate属于JBoss,JBoss被Redhat收购,因此现在Hibernate属于Redhat;
Hibernate现在已经发布版本4了,但是现在常用的还是版本3,因此我们现在就版本3进行讲解;

ORM框架主要完成的是操作持久化对象-->操作关系型数据库的映射;


安装Hibernate Tools插件,此插件能够方便我们我、Hibernate开发;
Update Site:  http://download.jboss.org/jbosstools/updates/stable/helios/ 

安装插件后,就可以很快速的创建一个hibernate.cfg.xml 和 *.hbm.xml;

注意:因为Hibernate的目标是操作数据库,因此数据库的驱动是必须要配置的;


一、配置Hibernate3


制作User Library






这样做的好处是如果以后开发需要使用Hibernate时,直接导入即可,很方便;

这样我们Hibernate环境就配置好了;



POJO的限制

(1)必须有一个无参构造方法;
(2)有一个主键(通常为id);
(3)类不能是final的;


二、开发一个Hibernate入门程序



工程的目录如下:




POJO

package org.xiazdong;

public class Person {
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

Person.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">
<!-- Generated 2012-5-13 14:23:31 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
	<class name="org.xiazdong.Person" table="PERSON">	<!-- 设置类,和对应的表 -->
		<id name="name" type="java.lang.String">	<!-- id标签设置主键 -->
		</id>
		<property name="age" type="int">	<!-- 设置其他属性 -->
		</property>
	</class>
</hibernate-mapping>



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">	<!--如果使用HibernateTools,则会自动生成这些DTD -->
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>	<!-- 设置驱动 -->
        <property name="hibernate.connection.password">12345</property>		<!-- 设置密码 -->
        <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>	<!-- 设置URL -->
        <property name="hibernate.connection.username">root</property>	<!-- 设置用户名 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>	<!-- 设置数据库方言 -->
        <property name="show_sql">true</property>	<!-- 设置为true,则如果执行SQL语句,则会显示在console中 -->
       	<property name="hbm2ddl.auto">update</property>	<!-- 更新数据库 -->
        <mapping resource="org/xiazdong/Person.hbm.xml"/>	<!-- 指定映射文件 -->
    </session-factory>
</hibernate-configuration>


测试文件

package org.xiazdong;

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


public class Test {

	public static void main(String[] args) {
		Configuration config = new Configuration().configure();	//读取hibernate.cfg.xml
		SessionFactory factory = config.buildSessionFactory();	//创建Session工厂
		Session session = factory.openSession();	//创建session
		Transaction t = session.beginTransaction();	//因为hibernate不是自动提交,因此需要创建事务
		Person p = new Person();	//创建POJO
		p.setName("xiazdong");
		p.setAge(21);
		session.save(p);	//POJO-->PO
		t.commit();	//提交事务
	}

}


小知识点:


1.显示Mysql支持的引擎

show engines;

2.显示表当前使用的引擎

show create table [表名];

posted @ 2012-05-13 17:33  xiazdong  阅读(186)  评论(0)    收藏  举报