Hibernate是一个开源的ORM框架,顾名思义,它的核心思想即ORM(Object Relational Mapping,对象关系映射),可以通过对象来操作数据库中的信息,据说开发者一开始是不太熟悉数据库SQL语句的,这也造就了hibernate的强大之处,它不强求开发者熟悉SQL语句也可以操作数据库,hibernate可以自动生成SQL语句,自动执行。
利用hibernate可以让开发者完全使用面想对象思维来操作数据库,所以接下来的演示不会有一句SQL语句,如果有的话,请当我这句话没说!
本文使用hibernate实现了简单的对一个person数据表的基本增删改查操作。
准备工作环境:win7+eclipse
工具包:hibernate包,可前往下载,本例中使用的是4版本;
数据库连接驱动包,本例中使用的是mysql的
程序结构图示 pojo层实体类
package demo.pojo; public class Person { private Integer id; private String name; private String gender; private Integer age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person [id=" + id + ",, gender=" + gender + ", age=" + age + "]"; } }
核心配置文件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>
<!-- 以下四行分别为:数据库驱动类、Drivermanager获取连接的参数URL、用户名、密码 -->
<property>com.mysql.jdbc.Driver</property>
<property>jdbc:mysql://127.0.0.1/web?characterEcoding=utf-8</property>
<property>root</property>
<property>123456</property>
<!-- 设置方言,hibernate会根据数据库的类型相应生成SQL语句 -->
<property>org.hibernate.dialect.MySQLDialect</property>
<!-- 控制台显示生成的sql语句,默认为false -->
<property>true</property>
<!-- 映射配置源文件的位置 -->
<mapping resource="demo/pojo/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name是实体类全名,table为数据表名 -->
<class table="Person">
<id column="id">
<!-- 主键生成方式,native是让hibernate自动识别 -->
<generator></generator>
</id>
<!--
注意点:
0.name值为实体类中属性名,column为数据表中字段名;
1.当实体类中属性名与对应数据表字段名相同时,后面的column可以省略,hibernate会自动匹配,例如下面age ;
2.反之当实体类中属性名与对应数据表字段名不相同时,两项都要写上,例如下面gender和sex
-->
<property column="name"></property>
<property column="sex"></property>
<property></property>
</class>
</hibernate-mapping>
Session工厂类
package demo.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;