在另一篇文章hibernate5(2)初入門配置實例中,我們針對hibernate5.1版本的嶄新引導配置方法,完成了對數據庫的的插入實例操作,在本節內容中,我們開始引入spring4,完成spring4與hibernate5.1的整合工作,像數據庫中插入一條記錄。在後面學習hibernate中,我們都會使用spring來管理我們的Bean容器。
我們推薦使用maven來管理項目,下面是maven中的spring整合hibernate完整配置。
UTF-8
5.1.0.Final
4.0.2.RELEASE
junit
junit
4.10
test
org.slf4j
slf4j-api
1.7.5
org.slf4j
slf4j-log4j12
1.7.5
runtime
log4j
log4j
1.2.17
runtime
mysql
mysql-connector-java
5.1.21
cglib
cglib
2.2.2
commons-dbcp
commons-dbcp
1.2.2
org.hibernate
hibernate-core
${org.hibernate-version}
org.hibernate
hibernate-validator
${org.hibernate-version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-orm
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-test
${spring.version}
javax.servlet
javax.servlet-api
3.1.0
provided
org.apache.commons
commons-dbcp2
2.0
commons-logging
commons-logging
1.1.1
在這裡,我們順便引入了springMVC相關jar包,在我們的後續學習測試中可能會用到,現在暫時不用理會
在上一節中,我們的數據庫、hibernate的相關配置都在hibernate.cfg.xml文件中完整,使用spring後,這些統統交給spring來進行管理。spring完整實例配置文件如下
org.hibernate.dialect.MySQL5Dialect
none
update
true
thread
關於spring的配置學習,可參考我另一博客專欄《Spring研磨分析》。
測試實體類與我們上一篇文章實例一樣。
package com.zeng.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity//聲明當前類為hibernate映射到數據庫中的實體類
@Table(name = "t_user")//聲明在數據庫中自動生成的表名為t_user
public class User {
@Id//聲明此列為主鍵
@GeneratedValue(strategy = GenerationType.AUTO)//根據不同數據庫自動選擇合適的id生成方案,這裡使用mysql,為遞增型
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Test
public void test2(){
//使用此方法獲取並初始化我們的spring容器,注意pring-datasource.xml必須存放在類路徑的根目錄下。
ApplicationContext ac = new ClassPathXmlApplicationContext("spring-datasource.xml");
//從spring容器中獲取我們的會話工廠實例,裡面已完成好各個屬性的配置工作
SessionFactory sessionFactory = (SessionFactory) ac.getBean("sessionFactory");
//下面開始我們的數據庫操作
Session session = sessionFactory.openSession();//從會話工廠獲取一個session
Transaction transaction = session.beginTransaction();//開啟一個新的事務
User user = new User();
user.setName("hello spring");
session.save(user);
transaction.commit();//提交事務
}
運行測試文件,看到打印信息:
Hibernate: insert into t_user (name) values (?)
說明我們的插入操作已完成,查看數據,會看到一條新的記錄。
至此,我們輕松地完成了spring與hibernate的整合工作,從下一節開始,我們以快速入門為目的,先介紹hibernate的各類使用方法,在結合實例熟悉hibernate的基本使用後,我們再深入開展對hibernate的分析學習。