Hibernate使用JPA的方式

原文地址:http://gaozengguang.iteye.com/blog/514273

NOTE: 此种方法DAO类必须继承:public class UserDAO extends HibernateDaoSupport

1、下载Hibernate3.0.jar,hibernate-annotations.jar,hibernate-commons-annotations.jar等包。

2、在src下新建applicationContext.xml和base-jdbc.properties文件其内容如下:

   2.1——applicationContext.xml文件

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <beans default-autowire="byType"  
  3.     xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:aop="http://www.springframework.org/schema/aop"  
  6.     xmlns:tx="http://www.springframework.org/schema/tx"  
  7.     xsi:schemaLocation="  
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  
  10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">  
  11.     <bean id="propertyConfigurer"  
  12.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  13.         <property name="locations">  
  14.             <list>  
  15.                 <value>classpath:base-jdbc.properties</value>  
  16.             </list>  
  17.         </property>  
  18.     </bean>  
  19.     <!-- 连接MySql数据库配置 -->  
  20.     <bean id="dataSource"  
  21.         class="org.apache.commons.dbcp.BasicDataSource">  
  22.         <property name="driverClassName">  
  23.             <!-- <value>${jdbc.kpi.driverClassName}</value>  -->  
  24.             <value>${mysql.driver}</value>  
  25.         </property>  
  26.         <property name="url">  
  27.             <!-- <value>${jdbc.kpi.url}</value> -->  
  28.             <value>${mysql.url}</value>  
  29.         </property>  
  30.         <property name="username">  
  31.             <!-- <value>${jdbc.kpi.username}</value> -->  
  32.             <value>${mysql.username}</value>  
  33.         </property>  
  34.         <property name="password">  
  35.             <!-- <value>${jdbc.kpi.password}</value> -->  
  36.             <value>${mysql.password}</value>  
  37.         </property>  
  38.     </bean>  
  39.     <bean id="sessionFactory"  
  40.         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  41.         <property name="dataSource" ref="dataSource" />  
  42.         <property name="hibernateProperties">  
  43.             <props>  
  44.                 <prop key="hibernate.query.factory_class">  
  45.                     org.hibernate.hql.classic.ClassicQueryTranslatorFactory  
  46.                 </prop>  
  47.   
  48.                 <prop key="hibernate.dialect">  
  49.                     <!-- org.hibernate.dialect.Oracle9iDialect -->  
  50.                     org.hibernate.dialect.MySQLDialect  
  51.                 </prop>  
  52.   
  53.                 <prop key="hibernate.cache.use_query_cache">false</prop>  
  54.                 <prop key="hibernate.show_sql">true</prop>  
  55.             </props>  
  56.         </property>  
  57.         <property name="annotatedClasses">  
  58.             <list>  
  59.                 <value>com.test.myhibernate.user.dto.User</value>  
  60.             </list>  
  61.         </property>  
  62.     </bean>  
  63.   
  64.     <bean id="UserDAO" class="com.test.myhibernate.user.dao.UserDAO">  
  65.         <property name="sessionFactory" ref="sessionFactory"></property>  
  66.     </bean>  
  67. </beans>  

 

   2.2——base-jdbc.properties文件

Properties代码   收藏代码
  1. mysql.driver=com.mysql.jdbc.Driver  
  2. mysql.url=jdbc:mysql://localhost:3306/myuser  
  3. mysql.username=root  
  4. mysql.password=root  

 

3、根据项目要求在模块目录下新建几个pagekage。分别是:action,dto,dao,util。

4、在dto中新建User.java。其内容如下:

Java代码   收藏代码
  1. package com.test.myhibernate.user.dto;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. import javax.persistence.Column;  
  6. import javax.persistence.Entity;  
  7. import javax.persistence.Id;  
  8. import javax.persistence.Table;  
  9.   
  10. @Entity  
  11. @Table(name = "user")  
  12. public class User implements Serializable {  
  13.     /** 
  14.      *  
  15.      */  
  16.     private static final long serialVersionUID = 1L;  
  17.       
  18.     @Id  
  19.     @Column(name="id")  
  20.     private long id;  
  21.       
  22.     @Column(name="username")  
  23.     private String username;  
  24.       
  25.     @Column(name="password")  
  26.     private String password;  
  27.       
  28.     @Column(name="name")  
  29.     private String name;  
  30.       
  31.     @Column(name="age")  
  32.     private long age;  
  33.       
  34.     @Column(name="sex")  
  35.     private String sex;  
  36.       
  37.     @Column(name="birthday")  
  38.     private String birthday;  
  39.   
  40.     public long getId() {  
  41.         return id;  
  42.     }  
  43.   
  44.     public void setId(long id) {  
  45.         this.id = id;  
  46.     }  
  47.   
  48.     public String getUsername() {  
  49.         return username;  
  50.     }  
  51.   
  52.     public void setUsername(String username) {  
  53.         this.username = username;  
  54.     }  
  55.   
  56.     public String getPassword() {  
  57.         return password;  
  58.     }  
  59.   
  60.     public void setPassword(String password) {  
  61.         this.password = password;  
  62.     }  
  63.   
  64.     public String getName() {  
  65.         return name;  
  66.     }  
  67.   
  68.     public void setName(String name) {  
  69.         this.name = name;  
  70.     }  
  71.   
  72.     public long getAge() {  
  73.         return age;  
  74.     }  
  75.   
  76.     public void setAge(long age) {  
  77.         this.age = age;  
  78.     }  
  79.   
  80.     public String getSex() {  
  81.         return sex;  
  82.     }  
  83.   
  84.     public void setSex(String sex) {  
  85.         this.sex = sex;  
  86.     }  
  87.   
  88.     public String getBirthday() {  
  89.         return birthday;  
  90.     }  
  91.   
  92.     public void setBirthday(String birthday) {  
  93.         this.birthday = birthday;  
  94.     }  
  95.   
  96. }  

 

5、在dao中新建一个接口UserInterface.java。其内容如下:

Java代码   收藏代码
  1. package com.test.myhibernate.user.dao;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.test.myhibernate.user.dto.User;  
  6.   
  7.   
  8. public interface UserInterface {  
  9.     /** 
  10.      * @deprecated 得到所有的用户对象 
  11.      * @return 
  12.      */  
  13.     public abstract List<User>  getAllUser();  
  14.     /** 
  15.      * @deprecated 通过Id查询到一个User对象。  
  16.      * @param id 
  17.      * @return 
  18.      */  
  19.     public abstract User        getUserById(int id);  
  20.     /** 
  21.      * @deprecated 通过Id删除一个User对象 
  22.      * @param id 
  23.      * @return 
  24.      */  
  25.     public abstract boolean     deleteUserById(int id);  
  26.     /** 
  27.      * @deprecated 添加一个User记录 
  28.      * @param user 
  29.      * @return 
  30.      */  
  31.     public abstract boolean     addUser(User user);  
  32.     /** 
  33.      * @deprecated 修改一条记录 
  34.      * @param user 
  35.      * @return 
  36.      */  
  37.     public abstract boolean     updateUser(User user);  
  38.   
  39. }  

 

6、在dao中实现这个接口UserDAO.java。其内容如下:

Java代码   收藏代码
  1. package com.test.myhibernate.user.dao;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.springframework.dao.DataAccessException;  
  7. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  8.   
  9. import com.test.myhibernate.user.dto.User;  
  10.   
  11. public class UserDAO extends HibernateDaoSupport implements UserInterface {  
  12.   
  13.     @Override  
  14.     public boolean addUser(User user) {  
  15.         try {  
  16.             super.getHibernateTemplate().save(user);  
  17.             return true;  
  18.         } catch (DataAccessException e) {  
  19.             e.printStackTrace();  
  20.             return false;  
  21.         }   
  22.     }  
  23.   
  24.     @Override  
  25.     public boolean deleteUserById(int id) {  
  26.         User user = getUserById(id);  
  27.         try {  
  28.               
  29.             if (user != null) {  
  30.                 super.getHibernateTemplate().delete(user);  
  31.                 return true;  
  32.             } else {  
  33.                 return false;  
  34.             }  
  35.         } catch (DataAccessException e) {  
  36.             e.printStackTrace();  
  37.             return false;  
  38.         }  
  39.     }  
  40.   
  41.     @Override  
  42.     public List<User> getAllUser() {  
  43.         List<User> list = new ArrayList<User>();  
  44.         try{  
  45.             list = (ArrayList<User>)super.getHibernateTemplate().find("from com.test.myhibernate.user.dto.User");  
  46.             return list;  
  47.         }catch (DataAccessException e) {  
  48.             e.printStackTrace();  
  49.             return null;  
  50.         }  
  51.     }  
  52.   
  53.     @Override  
  54.     public User getUserById(int id) {  
  55.         User user = null;  
  56.         try{  
  57.             user = (User)super.getHibernateTemplate().get(com.test.myhibernate.user.dto.User.classnew Long(id));  
  58.             return user;  
  59.         }  
  60.         catch (DataAccessException e) {  
  61.             e.printStackTrace();  
  62.             return null;  
  63.         }  
  64.     }  
  65.   
  66.     @Override  
  67.     public boolean updateUser(User user) {  
  68.         try{  
  69.             super.getHibernateTemplate().update(user);//update使用Session不能进行修改  
  70.             return true;  
  71.         }  
  72.         catch (DataAccessException e) {  
  73.             e.printStackTrace();  
  74.             return false;  
  75.         }  
  76.     }  
  77.   
  78. }  

 

7、在action中新建一个测试类main.java。其内容如下:

Java代码   收藏代码
  1. package com.test.myhibernate.user.action;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.springframework.context.ApplicationContext;  
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  8.   
  9. import com.test.myhibernate.user.dao.UserDAO;  
  10. import com.test.myhibernate.user.dto.User;  
  11.   
  12. public class main {  
  13.   
  14.     /** 
  15.      * @param args 
  16.      */  
  17.     public static void main(String[] args) {  
  18.         ApplicationContext app = new ClassPathXmlApplicationContext(  
  19.                 "applicationContext.xml");  
  20.         UserDAO userDAO = (UserDAO) app.getBean("UserDAO");  
  21.           
  22.         User user = new User();  
  23.         user.setAge(21);  
  24.         user.setBirthday("1988-10-07");  
  25.         user.setName("xiaoguang");  
  26.         user.setPassword("xiaoguangguang");  
  27.         user.setSex("M");  
  28.         user.setUsername("xiaoguangla");  
  29.           
  30.         userDAO.addUser(user);  
  31.           
  32.           
  33.         userDAO.deleteUserById(0);  
  34.         List<User> list = new ArrayList<User>();   
  35.         list = userDAO.getAllUser();  
  36.         int size = list.size();  
  37.         for(int i=0;i < size;i++)  
  38.         {  
  39.             System.out.println(list.get(i).getId());  
  40.         }  
  41.         user.setId(5);  
  42.         user.setUsername("dingdang");  
  43.         userDAO.updateUser(user);  
  44.           
  45.         User newUser = userDAO.getUserById(1);  
  46.         System.out.println(newUser.getName());  
  47.     }  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值