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 或更高版本

Hibernate

Hibernate就是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/