spring和hibernate初步整合(annotation)
bean.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:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"><context:component-scan base-package="com.test"></context:component-scan><bean id="myDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:oralsb"/> <property name="username" value="scott"/> <property name="password" value="tiger"/></bean><!-- annotation版 --><bean id="mySessionFactory" ref="myDataSource"/><property name="annotatedClasses"><list> <value>com.test.model.User</value></list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> </bean></beans>
?
模型类
User.java
package com.test.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="t_user")public class User {private int id;private String name;@Id@GeneratedValuepublic 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;}}?
接口
UserDAO.java
package com.test.dao;import com.test.model.User;public interface UserDAO {public void save(User user);}?
实现接口类
UserDAOImpl.java
package com.test.dao.impl;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.stereotype.Component;import com.test.dao.UserDAO;import com.test.model.User;@Component("userDAOImpl")public class UserDAOImpl implements UserDAO {private SessionFactory sessionFactory;public SessionFactory getSessionFactory() {return sessionFactory;}@Resource(name = "mySessionFactory")public void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}public void save(User user) {Session session = sessionFactory.openSession();session.beginTransaction();session.save(user);session.getTransaction().commit();session.close();}}?
服务类
UserService.java
package com.test.service;import javax.annotation.Resource;import org.springframework.stereotype.Component;import com.test.dao.UserDAO;import com.test.model.User;@Component("userService")public class UserService {private UserDAO userDAO;public void add(User user) {userDAO.save(user);}public UserDAO getUserDAO() {return userDAO;}// 这里会找注解Component的值为:userDAOImpl的那个类@Resource(name="userDAOImpl")public void setUserDAO(UserDAO userDAO) {this.userDAO = userDAO;}}?
Junit测试类
UserServiceTest.java
package com.test.service;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.test.model.User;public class UserServiceTest {@Testpublic void testAdd() throws Exception {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");UserService service = (UserService) applicationContext.getBean("userService");User u = new User();u.setName("张三");service.add(u);}}?