19.笔记JAVA Spring框架学习————Spring整合Hibernate
• Spring 支持大多数流行的 ORM 框架, 包括 Hibernate JDO, TopLink, Ibatis 和 JPA。
• Spring 对这些 ORM 框架的支持是一致的, 因此可以把和 Hibernate 整合技术应用到其他 ORM 框架上.
• Spring 2.0 同时支持 Hibernate 2.x 和 3.x. 但 Spring 2.5 只支持 Hibernate 3.1 或更高版本
HibernateHibernate就是Java后台数据库持久层的框架,也是目前企业用最多的数据库框架,主要是基于ORM -- objectrelationship Mapping,翻译成中文叫“对象关系映射”,也就是将SQL这种非面向对象语言转化成hibernation面向对象的写法
如何进行整合呢?
步骤如下:
新建JAVA项目
加入hibernate在下载包中,required文件夹中的所有jar包赋值到eclipse中
因为要链接mysql 数据库,所以还需要c3p0和mysql的驱动包。
添加hibernate配置文件
New一个hibernate.cfg.xml,配置hibernate的基本属性。配置数据源到IOC容器等。
配置HIBERNATE基本属性,数据源配置到IOC容器中
内容如下:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE hibernate-configurationPUBLIC
"-//Hibernate/HibernateConfiguration 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>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/test
</property>
<!-- 数据库连接设置 -->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">huawei</property>
<!-- show_sql 生成SQL语句输出到日志以供调式 -->
<property name="hibernate.show_sql">true</property>
<!-- SQL dialect 方言 -->
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 指定session通过当前执行的线程来跟踪和界定 -->
<property name="hibernate.current_session_contecxt_class">
thread
</property>
<!-- 添加实体类的映射文件 -->
<mapping resource="login.hbm.xml" />
</session-factory>
</hibernate-configuration>
PS:需要在MYSQL数据库中创建test数据库。
创建表
如下
CREATE TABLE `login` (
`id` int(11) ,
`name`varchar(20) ,
`password` varchar(20)
);
创建login类
public class login {
private int id;
private String name;
private String password;
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;
}
}
新建login.hbm.xml
用于映射数据库字段和表
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE hibernate-mappingPUBLIC
"-//Hibernate/HibernateMapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
<class name="login" table="login">
<id name="id" type="java.lang.Integer"></id>
<property name="name" type="java.lang.String" />
<property name="password" type="java.lang.String"/>
</class>
</hibernate-mapping>
测试文件
新建testLogin.java作为测试文件
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.Configuration;
public class testLogin {
public static void main(String a[])
{
login l = new login();
l.setId(1);
l.setName("456");
l.setPassword("456");
Configuration cfg = new Configuration();
SessionFactory sf = cfg.configure().buildSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
session.save(l);
session.getTransaction().commit();
session.close();
sf.close();
System.out.print("success!");
}
}
执行如下:
Hibernate:insert into login (name, password, id) values (?, ?, ?)
success!
在 Spring 中配置 SessionFactory• 对于 Hibernate 而言, 必须从原生的Hibernate API 中构建 SessionFactory. 此外, 应用程序也无法利用 Spring 提供的数据存储机制(例如: Spring 的事务管理机制)
• Spring 提供了对应的工厂 Bean, 可以用单实例的形式在 IOC 容器中创建 SessionFactory 实例.
Hibernate下载地址http://hibernate.org/orm/downloads/