准备工作
- 下载Hibernate,地址http://hibernate.org/orm,即可下载最新版本,由于笔者用的书是以4.3.5来写的,为了统一我也使用这个版本的吧,下载地址
- 下载好后的压缩包解压后找到lib/required子目录下的所有jar包添加到应用的类加载路径中,我这里以eclipse为例,示例地址
做一个小例子
首先创建好hibernate.cfg.xml文件,eclipse有自带的工具去创建的,右击我们的java项目,选择【New】,找到Hibernate Configuration File,点击【next】
之后选择好保存的路径,一般我们是放在src文件夹下的,在点【next】
输入好数据库链接信息,点击【Finish】,就可以自动生成一个xml文件,我们还需要在这个xml文件中添加一些参数
配置好的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">
<hibernate-configuration>
<session-factory>
<!-- 指定连接数据库的驱动类 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 指定连接的数据库的url,我这里是连接到本地的test数据库上 -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
<!-- 连接数据库的用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 连接数据库的密码(我这里是为空的) -->
<property name="hibernate.connection.password"></property>
<!-- 指定连接池中的最大连接数 -->
<property name="hibernate.c3p0.max_size">20</property>
<!-- 指定连接池中最小连接数 -->
<property name="hibernate.c3p0.min_size">1</property>
<!-- 指定连接池中连接的超时时长 -->
<property name="hibernate.c3p0.timeout">5000</property>
<!-- 指定连接池里最大缓存多少个Statement对象 -->
<property name="hibernate.c3p0.max_statements">100</property>
<!-- 指定数据库方言(就是说你这个数据库是什么类型的) -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 设置:根据需要自动创建(更新)数据库表 -->
<property name="hbm2ddl.auto">update</property>
<!-- 显示Hibernate持久化操作所生成的SQL -->
<property name="show_sql">true</property>
<!-- 将SQL脚本进行格式化后再输出 -->
<property name="hibernate.format_sql">true</property>
<!-- 罗列所有持久化类的类名 ,在这里就是我们的entity-->
<mapping class="entity.Person"/>
</session-factory>
</hibernate-configuration>
之后我们创建一个类用于测试,内容如下
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import entity.Person;
public class Test {
public static void main(String[] args) {
//不带参数的configure方法将默认加载hibernate.cfg.xml文件,如果传入abc.xml作为参数
//则不加载hibernate.cfg.xml,而改成abc.xml
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties()).buildServiceRegistry();
//以Configuration实例创建SessionFactory实例
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
//创建Session
Session session = sessionFactory.openSession();
//开始事务
Transaction transaction = session.beginTransaction();
//创建消息对象,并设置属性
Person person = new Person();
person.setName("admin");
person.setWeight(100.5);
//保存消息
session.save(person);
//提交事物
transaction.commit();
session.close();
sessionFactory.close();
}
}
如果在控制台中没有什么问题,并且数据库中加入了admin这条数据的话,说明hibernate已经可以使用了