hibernate框架介绍:
ORM概念(很重要)
O,Object 对象. R,Relation 关系. M,Mapping 映射
ORM:对象关系映射!
ORM,解决了什么问题?
存储:能否把对象的数据直接保存到数据库中
获取:能否直接从数据库拿到一个对象
要想做到上述两点,必须要有映射
总结:Hibernate与 ORM的关系:Hibernate是ORM的实现
如何搭建一个Hibernate开发环境,开发步骤:
(1)下载源码:版本hibernate-distribution-3.6.0.Final
(2)引入jar文件 :Hibernate3.jar核心+required必须引入的(6个)+jsp目录+mysql驱动
(3)写对象以及对象的映射
Employee.java 对象
Employee.hbm.xml 对象的映射(一般我们使用hbm.xml结尾,这是为了区分Hibernate映射文件)
(4)src/hibernate.cfg.xml(这个文件的命名必须这样写)
1.Employee.java
package cn.itcast.hello;
import java.util.Date;
public class Employee {
private int id;
private String empName;
private Date workDate;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Date getWorkDate() {
return workDate;
}
public void setWorkDate(Date workDate) {
this.workDate = workDate;
}
}
2.Employee.hbm.xml文件
主要包括主键映射和非主键映射
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.hello">
<class name="Employee" table="employee">
<!-- 主键 映射-->
<id name="id">
<generator class="native"></generator>
</id>
<!-- 非主键 映射 -->
<property name="empName" column="empName"></property>
<property name="workDate" column="workDate"></property>
</class>
</hibernate-mapping>
3.hibernate.cfg.xml文件
(1)数据库连接的配置.如果不懂可以去Hibernate源码/project/etc/hibernate.properties找到复制粘贴即可
(2)其他配置包括方言以及是不是自动建表的配置信息
(3)映射文件的引入.<mapping resource="配置文件的目录"/>
<!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">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///day25</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">169500</property>
<!-- 2.其他配置信息,hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql语句 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 显示sql语句信息 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">create</property>
<!-- 3.导入映射文件 -->
<mapping resource="cn/itcast/hello/Employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4.测试类AppTest
编写步骤:
(1).获取加载配置文件的管理类对象.(2).加载配置文件.(3).创建session工厂对象.(4).创建session(代表的是一个对话,与数据库连接的会话).(5).开启事务.(6).与数据库的操作.(7).提交事务.(8).关闭资源.
package cn.itcast.hello;
import java.util.Date;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
public class AppTest {
@Test
public void test(){
Employee emp=new Employee();
emp.setEmpName("李卫康");
emp.setWorkDate(new Date());
//1.获取加载配置文件的管理类对象
Configuration config=new Configuration();
//2.加载配置文件
config.configure();//默认加载的是src目录下的hiberate.xml文件
//3.创建session工厂对象
SessionFactory factory = config.buildSessionFactory();
//4.创建session(代表的是一个对话,与数据库连接的会话)
Session session = factory.openSession();
//5.开启事务
Transaction tx = session.beginTransaction();
//6.与数据库的操作
session.save(emp);
//7.提交事务
tx.commit();
//8.关闭资源
session.close();
}
}
运行结果可以发现数据库中多了一个employee的表,并有一条记录