1.搭建hibernate环境
导入jar包,由于hibernate会有日志输出,本身没有对日志处理的jar包,所以需要另外导入hibernate-entitymanager是hibernate一套规范,所以也是需要的
所有必须jar包下载地址:http://download.csdn.net/detail/m0_37983376/9864698
2.创建实体类
package com.sq.entity;
/**
*@author sq
*
*/
public class User {
/**
* hibernate 要求实体类有一个属性是唯一的
*/
private String uid;
private String username;
private String password;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [uid=" + uid + ", username=" + username + ", password="
+ password + "]";
}
}
(1)使用hibernate不需要手动创建表,hibernate会自动帮你创建
3.配置hibernate实现数据库表与实体类一一对应关系(映射关系)
(1)实用配置文件实现映射关系
- 创建一个xml的配置文件,名称位置没有固定要求
建议:在实体类的包下面创建,名称:实体类.hbm.xml
- 引入dtd约束
- 配置实体类和数据表的对应关系
<?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>
<!-- 1.配置类和表对应
class标签
name属性:实体类全路径名
table属性:数据库表名称
-->
<class name="com.sq.entity.User" table="t_user">
<!-- 2.配置实体类id和表id对应
hibernate要求实体类有一个属性唯一值
hibernate要求表有字段作为唯一值
-->
<!-- id标签
name属性:实体类里面id属性名称
column属性:生成表字段名称
-->
<id name="uid" column="uid">
<!-- 设置数据库表id增长策略
native:生成的表id值就是主键自动增长
-->
<generator class="native"></generator>
</id>
<!-- 3.配置其他属性和表字段对象
name属性:实体类属性名称
column属性:生成表字段名称
-->
<property name="username" column="username"></property>
<property name="password" column="password"></property>
</class>
</hibernate-mapping>
4.创建hibernate核心配置文件
(1)核心配置文件xml,名称和位置是固定的,位置必须在src下面,名称必须为hibernate.cfg.xml
(2)引入dtd约束
(3)hibernate只会加载核心配置文件
<?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>
<!-- 1.配置数据库的信息 必须有-->
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.username">sq</property>
<property name="hibernate.connection.password">sq</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!-- 2.配置hibernate信息 可选-->
<!-- 输出底层sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 输出底层sql语句格式 -->
<property name="hibernate.format_sql">true</property>
<!-- hibernate帮创建表,需要配置之后
update:如果已有表,会更新,没有会创建
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 配置数据库方言
在mysql里面实现分页关键字limit,只能使用mysql里面
在oracle数据库,实现分页rownum
让hibernate框架识别不同数据库的语句
-->
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 3.把映射文件放入到核心配置文件中 必须的-->
<mapping resource="com/sq/entity/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5.实现添加操作
(1)加载hibernate核心配置文件
(2)创建Sessionfactory对象
(3)使用Sessionfactory创建session对象
(4)开启事物
(5)写具体逻辑crud操作
(6)提交事务
(7)关闭资源
package com.sq.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.sq.entity.User;
/**
*@author sq
*
*/
public class Demo {
@Test
public void test(){
// (1)加载hibernate核心配置文件
//到src下面找到名称是hibernate.cfg.xml
//在hibernate里面封装对象
Configuration cfg = new Configuration();
cfg.configure();
// (2)创建Sessionfactory对象
//读取hibernate核心配置文件内容,创建sessionFactory
//在过程中,根据映射关系,在配置数据库里面把表建立好
SessionFactory sf = cfg.buildSessionFactory();
// (3)使用Sessionfactory创建session对象
Session session = sf.openSession();
// (4)开启事物
Transaction tx = session.beginTransaction();
// (5)写具体逻辑crud操作
User user = new User();
user.setUsername("sq");
user.setPassword("sq");
//调用session里面的方法实现添加
session.save(user);
// (6)提交事务
tx.commit();
// (7)关闭资源
session.close();
sf.close();
}
}