`

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" class="org.apache.commons.dbcp.BasicDataSource" 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" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
	    <property name="dataSource" 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
	@GeneratedValue
	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;
	}

}

 

接口

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 {

	@Test
	public 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);
	}

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics