前言
hibernate是一个轻量级ORM框架,用来实现java对象和表之间的映射,除此之外它还提供数据查询和获取数据的方法。
搭建步骤:
1.在数据库中建立一张表,比如说tb_user
2.配置 hibernate.cfg.xml ,放在src根目录下,主要包括
--| 四个DB方面的连接
--| 可选配置
--| mapping resources 引用 xxx.hbm.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>
<!-- DB配置 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">test</property>
<property name="connection.password">test</property>
<!-- 可选配置 -->
<property name="connection.pool_size">2</property>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="show_sql">true</property>
<!--引用映射文件-->
<mapping resource="cn/javass/h4/hello/UserModel.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3.配置xxx.hbm.xml,主要包括
--| 表和类的映射
--| 主键映射
--| 类的属性和DB中字段的映射
--| 关系映射
例子 UserModel.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
'-//Hibernate/Hibernate Mapping DTD 3.0//EN'
'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>
<hibernate-mapping>
<class name="cn.javass.h4.hello.UserModel" table="tbl_user">
<id name="uuid">
<generator class="assigned"/>
</id>
<property name=“userId”></property>
<property name=“name”></property>
<property name="age"></property>
</class>
</hibernate-mapping>
4.客户端文件
package cn.javass.h4.hello;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Client {
public static void main(String[] args) {
SessionFactory sf = new Configuration().configure().buildSessionFactory();//读取hibernate.cfg.xml,创建Session工厂,是线程安全的。
Session s = null;
Transaction t = null;
try{
//准备数据
UserModel um = new UserModel();
um.setUuid("1");
um.setUserId("id1");
um.setName("name1");
um.setAge(1);
s = sf.openSession(); //打开session
t = s.beginTransaction(); //开启事务
s.save(um);
t.commit();
}catch(Exception err){
t.rollback();
err.printStackTrace();
}finally{
s.close(); //关闭sess
}
}
}
直接在Elipse里面运行Client文件即可,运行结束,你将会看到在console输出:“Hibernate: insert into tbl_user (userId, name, age, uuid) values(?, ?, ?, ?)”,打开数据库的数据表,你会看到一条值已经加入了。
说明:
1 : SessionFactory sf = new Configuration().configure().buildSessionFactory(); 这句话的意思是读取hibernate.cfg.xml,创建Session工厂,是线程安全的。默认是”hibernate.cfg.xml”,不用写出来,如果文件名不是”hibernate.cfg.xml”,那么需要显式指定,如下:
SessionFactory sf = new Configuration().configure( "javass.cfg.xml").buildSessionFactory();
2 : Session是应用程序主要使用的Hibernate接口,约相当于JDBC的Connection+Statement/PreparedStatement的功能,是线程不安全的
3 : 在Hibernate4里面,已经不推荐使用Configuration类了,而改为使用ServiceRegistryBuilder来代替,新的写法大致如下:
4:这里使用的事务Transaction是Hibernate的Transaction,需要有,不能去掉。