Hibernate入门
ORM:Object Relation Mapping;
阻抗不匹配:现在我们常用的编程语言都是面向对象的,而常用的数据库都是关系型数据库,而我们一般如果要用Java访问MySQL,都是使用JDBC,并且要在Java代码中写SQL语句,而这点是由于面向对象和关系融合的缺点;
而ORM框架就解决了这点;
Hibernate是ORM框架的一种;而Hibernate属于JBoss,JBoss被Redhat收购,因此现在Hibernate属于Redhat;
Hibernate现在已经发布版本4了,但是现在常用的还是版本3,因此我们现在就版本3进行讲解;
ORM框架主要完成的是操作持久化对象-->操作关系型数据库的映射;
Hibernate3下载地址: http://sourceforge.net/projects/hibernate/files/hibernate3/
安装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 [表名];

浙公网安备 33010602011771号