Hibernate+Spring實現對數據庫的操作

優點

  1. 通過Spring的 IoC 容器來管理 Hibernate
  2. 使用Hibernate的模板類,更方便

準備

必要的jar

數據庫連接包

Hibernate 相關 jar

Spring 核心包 (5 個)

Spring aop 包 (4 個)

spring-orm-3.2.5.RELEASE.jar                 【spring 對 hibernate 的支持】

spring-tx-3.2.5.RELEASE.jar                     【事務相關】

 

步驟

  • 實體類Category :必須有無參數的構造函數和getter  setter方法
package com.syc.entity;
 
public class Category {
 
    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;
    }
    private int id;
    private String name;
}
  • 實體類對應的配置文件Category.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="com.syc.entity">
	<class name="Category" table="category_">
		<id name="id" column="id">
			<generator class="native">
			</generator>
		</id>
		<property name="name" />

	</class>
	
</hibernate-mapping>
  • DAO層

在這裏Category繼承了Hibernate封裝好的模板類HibernateTemplate,功能很全面,不必自己寫簡單的方法了,直接調用即可。

package com.syc.dao;

import org.springframework.orm.hibernate3.HibernateTemplate;

public class CategoryDAO extends HibernateTemplate{

	
}
  • spring 配置連接池和 hibernate 常用配置

最關鍵的一步,配置MySQL數據源

在src下創建xml:applicationContext.xml

注意修改一下自己的數據庫連接池屬性

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
   http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/aop 
   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
   http://www.springframework.org/schema/tx 
   http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
   http://www.springframework.org/schema/context      
   http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 
    <bean name="c" class="com.syc.entity.Category">
        <property name="name" value="yyy" />
    </bean>
    
    <bean name="dao" class="com.syc.dao.CategoryDAO">
        <property name="sessionFactory" ref="sf" />
    </bean>

	<bean name="sf"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="ds" />
		<property name="mappingResources">
			<list>
				<value>com/syc/entity/Category.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<value>
				hibernate.dialect=org.hibernate.dialect.MySQLDialect
				hibernate.show_sql=true
				hbm2ddl.auto=update
   			</value>
		</property>
	</bean>    
        
    <bean name="ds"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost:3306/train?characterEncoding=UTF-8" />
		<property name="username" value="SYC" />
		<property name="password" value="123456" />
	</bean>	

	
    


 
 
</beans>
  • 測試主類

package com.syc.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.syc.dao.CategoryDAO;
import com.syc.entity.Category;

public class TestSpring {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
		CategoryDAO dao = (CategoryDAO) context.getBean("dao");
		Category c = new Category();
		c.setName("category yyy");
		dao.save(c);	
		Category c2 = dao.get(Category.class, 1);
		c2.setName("category zzz");
		dao.update(c2);
		dao.delete(c2);

	}
}

 

到此Spring+Hibernate的詳細步驟就結束了,算是自己的一個總結吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章