public class User { private int id; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
对应数据库映射文件
<?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.job.model"> <class name="User" table="Users"> <id name="id" column="USER_ID"> <generator class="native"/> </id> <property name="name" type="java.lang.String"> <column name="name"> </column> </property> </class> </hibernate-mapping>
二.处理DAO接口
public interface UserDAO { public void save(User u); }
对应处理DAOImpl实现
@Component public class UserDAOImpl implements UserDAO{ private SessionFactory sessionFactory; public void save(User u) { try { Session s = sessionFactory.openSession(); s.beginTransaction(); s.save(u); s.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); } } public SessionFactory getSessionFactory() { return sessionFactory; } @Resource(name="sessionFactory") public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } }
将在spring容器内的sessionFactory注入到处理层中,处理数据
三。服务层
@Component public class UserService { private UserDAO userDAO; public void add(User u){ this.userDAO.save(u); } public UserDAO getUserDAO() { return userDAO; } @Resource(name="userDAOImpl") public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } }
将DAOImpl实现bean注入到服务层,供Action调用。
四、spring容器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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" 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.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 配置自动装配 AutowiredAnnotationBeanPostProcessor等接口,实现注入等功能 --> <context:annotation-config/> <!-- 配置扫描包路径,将包下所有组件实例化 --> <context:component-scan base-package="com.job"/> <!-- 声明一个处理实现类 --> <bean id="userDAOImpl" class="com.job.dao.UserDAOImpl"> <!-- 将sessionFactory注入到处理实理类中 --> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 在spring容器中,创建数据库连接Bean --> <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/test?useUnicode=true&characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="admin"/> </bean> <!-- 创建hibernate的sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 将spring容器中存在的数据库连接Bean,配置到sessionFactory中 --> <property name="dataSource" ref="DataSource"/> <!-- 配置hibernate映射实体对象到表的文件 --> <property name="mappingResources"> <list> <value>com/job/model/user.hbm.xml</value> </list> </property> <!-- 配置hibernate属性,方言,显示sql,是否创建数据表 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean> </beans>
五、测试
public class UserServiceTest { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService service = (UserService)ac.getBean("userService"); User u = new User(); u.setName("haha success!!"); service.add(u); } }