Hibernate 是一个开放源代码的对象关系映射(Obeject/Relation Mapping)框架 ,它对JDBC进行了非常轻量级的对象封装。支持现大部分常用的关系型数据库,使得对数据库表的CRUD操作变为OOP的操作。这样在开发效率和可拓展性上方便不少。
环境准备:官网Hibernate 下载Hibernate ORM 在工程上搭载好核心jar包。
资源: hibernatezh_CN 、 hibernate annotation references
Hibernate 有2方式来实现O/R Mapping,一种是xml(Hibernate风格)方式,另一种是Annotation(实现JPA)方式
以下内容可以参考Hibernate官网提供的Example
xml方式:
建立domain类
package com.yk.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* domain user类
*
* @author YangKang
*
*/
public class User {
private int id;
private String name;
private String password;
private String date;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
建立User映射文件 User.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> <!-- 指定要持久化的类com.feytuo.education.domain.UserBean 与定义的数据库 表edu_user的对应关系 --> <class name="com.yk.domain.User" table="user"> <id name="id" type="java.lang.Integer" column="id"> <generator class="identity" /> </id> <property name="name" type="java.lang.String"></property> <property name="password" type="java.lang.String"></property> <property name="date" type="java.lang.String"></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"> <hibernate-configuration> <session-factory> <!-- 连接mySql数据库的驱动 --> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <!-- 连接MySql数据库 --> <property name="hibernate.connection.url"> jdbc:mysql://localhost:3306/test </property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">qwertyuiopasdfghjkl</property> <!-- 设置dialect --> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property> <!--数据库连接池的大小 --> <property name="hibernate.connection.pool.size">1</property> <!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true --> <property name="hibernate.show_sql">true</property> <property name="hbm2ddl.auto">update</property> <!-- xml方式 --> <mapping resource="com/yk/domain/User.hbm.xml" /> <!-- annotation 方式 --> <!-- <mapping class="com/yk/domain/User.java" /> --> </session-factory> </hibernate-configuration>
Annotation 方式:
建立domain类引入JPA(Java Persistence API) annotation
package com.yk.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* domain user类
*
* @author YangKang
*
*/
@Entity
public class User {
private int id;
private String name;
private String password;
private String date;
@Id
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
在此不必再写映射的xml文件了,因为Entity替你完成映射了,默认数据库字段与属性名相同。
但加入到hibernate.cfg.xml里的不是xml文件了,而是domain的CLASS
以上为例,<mapping class="com/yk/domain/User.java" />
CRUD测试(以添加数据为例)
package com.yk.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import com.yk.domain.User;
public class UserDAO {
public static void main(String args[]) {
// 第一步:读取Hibernate的配置文件 hibernamte.cfg.xml文件
Configuration config = new Configuration().configure();
// 第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
StandardServiceRegistryBuilder regbulider = new StandardServiceRegistryBuilder()
.applySettings(config.getProperties());
// 创建注册服务
ServiceRegistry sry = regbulider.build();
// 第三步:创建会话工厂
SessionFactory factory = config.buildSessionFactory(sry);
// 取得session
Session session = null;
try {
session = factory.openSession();
session.beginTransaction();
User user = new User();
user.setId(1);
user.setName("张三");
user.setPassword("123");
user.setDate("20131014");
// 保存User对象
session.save(user);
// 提交事务
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}
}
}
先从创建一个会话(Session),之后就可以对Session 进行save,update,delete,load,get等操作。
我发现在之前的博客上,伙伴们对附在在CSDN的下载资源挺感兴趣的,附上下载地址
http://download.csdn.net/detail/u011458382/7411443