1.首先要导好包,不然之后就是不停的该错
spring-4.0.3版本
aopalliance-1.0.jar
aspectjrt.jar
aspectjweaver.jar
commons-dbcp-1.2.1.jar
commons-logging-1.1.3.jar
commons-pool-1.6.jar
mysql-connector-java-5.0.8-bin.jar
spring-aop-4.0.3.RELEASE.jar
spring-aspects-4.0.3.RELEASE.jar
spring-beans-4.0.3.RELEASE.jar
spring-context-4.0.3.RELEASE.jar
spring-core-4.0.3.RELEASE.jar
spring-expression-4.0.3.RELEASE.jar
spring-jdbc-4.0.3.RELEASE.jar
spring-orm-4.0.3.RELEASE.jar
spring-tx-4.0.3.RELEASE.jar
spring-web-4.0.3.RELEASE.jar
hibernate-4.3.5版本
antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.4.Final.jar
hibernate-core-4.3.5.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
log4j-1.2.17.jar
2.实体类POJO
package com.sam.web.vo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Student {
private intsid;//学号
private String sname;//姓名
public Student() {
}
@Id
@GeneratedValue
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + "]";
}
}
3.Dao层
package com.sam.web.dao;
import java.sql.SQLException;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.transaction.annotation.Transactional;
import com.sam.web.vo.Student;
public class StudentDao {
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
@Resource
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Transactional
public void saveStudent(Student s) throws SQLException {
/**
* @Transactional(rollbackFor/noRollbackFor
* value-String 指定管理器名
* propagation-enum 传播[required无则新建/not_supported有则挂起/requires_new新建,有则挂起
* mandatory无则异常/supports可有可无/never有则异常/nested]
* isolation-enum 隔离级别[read uncommited脏读,不可重复读,幻读/read commited不可重复读,幻读/ repeatable read幻读/serializable]
* timeout-int
* readonly-boolean
*/
Session session=sessionFactory.getCurrentSession();
session.save(s);
}
public Student queryStudent(String sid){
return null;
}
public List<Student> listStudent(){
return null;
}
}
4.测试类
package com.sam.web.test;
import java.sql.SQLException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.sam.web.dao.StudentDao;
import com.sam.web.vo.Student;
public class TestSpringHibernate {
StudentDao dao;
@Before
public void setUp() throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
dao=(StudentDao) context.getBean("StudentDao");
}
@After
public void tearDown() throws Exception {
}
@Test
public void testSave() throws SQLException {
Student s=new Student();
s.setSname("sam");
dao.saveStudent(s);
}
@Test
public void testQuery() throws SQLException {
//System.out.println(dao.query("00"));
System.out.println(dao.listStudent());
}
}
5.applicationContext.xml配置文件,注意跟hibernate3的区别
1).不再是org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
2).没有<prop key="hibernate.current_session_context_class">thread</prop>
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
>
<context:annotation-config/>
<context:component-scan base-package="com.sam.web"/>
<aop:aspectj-autoproxy/>
<!--配置数据源-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="packagesToScan">
<list>
<value>com.sam.web.vo</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<!--1事务管理器-->
<bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!--2Annotation方式事务管理-->
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="StudentDao" class="com.sam.web.dao.StudentDao"></bean>
</beans>