1、下载Hibernate3.0.jar,hibernate-annotations.jar,hibernate-commons-annotations.jar等包。
2、在src下新建applicationContext.xml和base-jdbc.properties文件其内容如下:
2.1——applicationContext.xml文件
<?xml version="1.0" encoding="utf-8"?> <beans default-autowire="byType" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:base-jdbc.properties</value> </list> </property> </bean> <!-- 连接MySql数据库配置 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <!-- <value>${jdbc.kpi.driverClassName}</value> --> <value>${mysql.driver}</value> </property> <property name="url"> <!-- <value>${jdbc.kpi.url}</value> --> <value>${mysql.url}</value> </property> <property name="username"> <!-- <value>${jdbc.kpi.username}</value> --> <value>${mysql.username}</value> </property> <property name="password"> <!-- <value>${jdbc.kpi.password}</value> --> <value>${mysql.password}</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="hibernateProperties"> <props> <prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory </prop> <prop key="hibernate.dialect"> <!-- org.hibernate.dialect.Oracle9iDialect --> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.cache.use_query_cache">false</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="annotatedClasses"> <list> <value>com.test.myhibernate.user.dto.User</value> </list> </property> </bean> <bean id="UserDAO" class="com.test.myhibernate.user.dao.UserDAO"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> </beans>
2.2——base-jdbc.properties文件
mysql.driver=com.mysql.jdbc.Driver mysql.url=jdbc:mysql://localhost:3306/myuser mysql.username=root mysql.password=root
3、根据项目要求在模块目录下新建几个pagekage。分别是:action,dto,dao,util。
4、在dto中新建User.java。其内容如下:
package com.test.myhibernate.user.dto;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "user")
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@Column(name="id")
private long id;
@Column(name="username")
private String username;
@Column(name="password")
private String password;
@Column(name="name")
private String name;
@Column(name="age")
private long age;
@Column(name="sex")
private String sex;
@Column(name="birthday")
private String birthday;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getAge() {
return age;
}
public void setAge(long age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
5、在dao中新建一个接口UserInterface.java。其内容如下:
package com.test.myhibernate.user.dao;
import java.util.List;
import com.test.myhibernate.user.dto.User;
public interface UserInterface {
/**
* @deprecated 得到所有的用户对象
* @return
*/
public abstract List<User> getAllUser();
/**
* @deprecated 通过Id查询到一个User对象。
* @param id
* @return
*/
public abstract User getUserById(int id);
/**
* @deprecated 通过Id删除一个User对象
* @param id
* @return
*/
public abstract boolean deleteUserById(int id);
/**
* @deprecated 添加一个User记录
* @param user
* @return
*/
public abstract boolean addUser(User user);
/**
* @deprecated 修改一条记录
* @param user
* @return
*/
public abstract boolean updateUser(User user);
}
6、在dao中实现这个接口UserDAO.java。其内容如下:
package com.test.myhibernate.user.dao;
import java.util.ArrayList;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.test.myhibernate.user.dto.User;
public class UserDAO extends HibernateDaoSupport implements UserInterface {
@Override
public boolean addUser(User user) {
try {
super.getHibernateTemplate().save(user);
return true;
} catch (DataAccessException e) {
e.printStackTrace();
return false;
}
}
@Override
public boolean deleteUserById(int id) {
User user = getUserById(id);
try {
if (user != null) {
super.getHibernateTemplate().delete(user);
return true;
} else {
return false;
}
} catch (DataAccessException e) {
e.printStackTrace();
return false;
}
}
@Override
public List<User> getAllUser() {
List<User> list = new ArrayList<User>();
try{
list = (ArrayList<User>)super.getHibernateTemplate().find("from com.test.myhibernate.user.dto.User");
return list;
}catch (DataAccessException e) {
e.printStackTrace();
return null;
}
}
@Override
public User getUserById(int id) {
User user = null;
try{
user = (User)super.getHibernateTemplate().get(com.test.myhibernate.user.dto.User.class, new Long(id));
return user;
}
catch (DataAccessException e) {
e.printStackTrace();
return null;
}
}
@Override
public boolean updateUser(User user) {
try{
super.getHibernateTemplate().update(user);//update使用Session不能进行修改
return true;
}
catch (DataAccessException e) {
e.printStackTrace();
return false;
}
}
}
7、在action中新建一个测试类main.java。其内容如下:
package com.test.myhibernate.user.action;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.test.myhibernate.user.dao.UserDAO;
import com.test.myhibernate.user.dto.User;
public class main {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext(
"applicationContext.xml");
UserDAO userDAO = (UserDAO) app.getBean("UserDAO");
User user = new User();
user.setAge(21);
user.setBirthday("1988-10-07");
user.setName("xiaoguang");
user.setPassword("xiaoguangguang");
user.setSex("M");
user.setUsername("xiaoguangla");
userDAO.addUser(user);
userDAO.deleteUserById(0);
List<User> list = new ArrayList<User>();
list = userDAO.getAllUser();
int size = list.size();
for(int i=0;i < size;i++)
{
System.out.println(list.get(i).getId());
}
user.setId(5);
user.setUsername("dingdang");
userDAO.updateUser(user);
User newUser = userDAO.getUserById(1);
System.out.println(newUser.getName());
}
}