欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

Spring2.5整合JPA

发布时间:2024/9/27 javascript 27 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Spring2.5整合JPA 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在网上找了很多Spring整合JPA的文章,试着去写了很多但没有成功,主要原因可能是jar不正确导致的。花了一些时间自已写了一个小例子,Spring2.5整合JPA(Hibernate实现)。

所需要的Spring2.5的jar包如下:

所需要的JPA的jar包如下:

Spring2.5整合JPA所需要的jar如下:

文件太大javaeye上传不了,上面的jar下载地址:(http://download.csdn.net/source/1933969)

1,配置我们的Spring配置文件beans.xml内空如下:

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" 
  •     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.5.xsd 
  •             http://www.springframework.org/schema/context            
  •             http://www.springframework.org/schema/context/spring-context-2.5.xsd 
  •             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
  •             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
  •  
  •     <context:annotation-config  /> 
  •  
  •     <bean id="entityManager" 
  •         class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> 
  •         <property name="persistenceUnitName" value="mengya"></property> 
  •     </bean> 
  •  
  •     <bean id="JPATranManager" 
  •         class="org.springframework.orm.jpa.JpaTransactionManager"> 
  •         <property name="entityManagerFactory" ref="entityManager"></property> 
  •     </bean> 
  •  
  •     <tx:annotation-driven transaction-manager="JPATranManager" /> 
  •  
  •     <bean id="studentDAO" 
  •         class="com.mengya.dao.imple.StudentDAOImple"> 
  •     </bean> 
  •  
  •     <bean id="studentSerivce" 
  •         class="com.mengya.service.imple.StudentServiceImple"> 
  •         <property name="studao" ref="studentDAO"></property> 
  •     </bean> 
  •  
  • </beans> 
  • <?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"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"><context:annotation-config /><bean id="entityManager"class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"><property name="persistenceUnitName" value="mengya"></property></bean><bean id="JPATranManager"class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManager"></property></bean><tx:annotation-driven transaction-manager="JPATranManager" /><bean id="studentDAO"class="com.mengya.dao.imple.StudentDAOImple"></bean><bean id="studentSerivce"class="com.mengya.service.imple.StudentServiceImple"><property name="studao" ref="studentDAO"></property></bean></beans>

    如查以上xml在你的MyEclipse中出显了一个错误提示,请你自手在你的MyEclipse的XML配置中配置http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

    2, 配置JPA的persistence.xml(在src/META-INF/persistence.xml中)内空如下:

    Xml代码
  • <?xml version="1.0" encoding="UTF-8"?> 
  • <persistence xmlns="http://java.sun.com/xml/ns/persistence" 
  •     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  •     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
  •     version="1.0"> 
  •     <persistence-unit name="mengya" transaction-type="RESOURCE_LOCAL"> 
  •         <properties> 
  •             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> 
  •             <property name="hibernate.hbm2ddl.auto" value="update" /> 
  •             <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver" /> 
  •             <property name="hibernate.connection.username" value="root" /> 
  •             <property name="hibernate.connection.password" value="###" /> 
  •             <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mp?useUnicode=true&amp;characterEncoding=gbk" /> 
  •         </properties> 
  •     </persistence-unit>    
  • </persistence> 
  • <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"version="1.0"><persistence-unit name="mengya" transaction-type="RESOURCE_LOCAL"><properties><property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /><property name="hibernate.hbm2ddl.auto" value="update" /><property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver" /><property name="hibernate.connection.username" value="root" /><property name="hibernate.connection.password" value="###" /><property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mp?useUnicode=true&amp;characterEncoding=gbk" /></properties></persistence-unit> </persistence>

    3,构建我们的实体Bean如下:

    Java代码
  • @Entity 
  • public class Student { 
  •  
  •     private Integer stu_id; 
  •  
  •     private String stu_name; 
  •  
  •     private String stu_sex; 
  •  
  •     private Integer stu_age; 
  •  
  •     private String stu_info; 
  •  
  •     @Id 
  •     @GeneratedValue(strategy = GenerationType.AUTO) 
  •     public Integer getStu_id() { 
  •         return stu_id; 
  •     } 
  •  
  •     public void setStu_id(Integer stu_id) { 
  •         this.stu_id = stu_id; 
  •     } 
  •  
  •     @Column(nullable = false
  •     public String getStu_name() { 
  •         return stu_name; 
  •     } 
  •  
  •     public void setStu_name(String stu_name) { 
  •         this.stu_name = stu_name; 
  •     } 
  •  
  •     public Integer getStu_age() { 
  •         return stu_age; 
  •     } 
  •  
  •     public void setStu_age(Integer stu_age) { 
  •         this.stu_age = stu_age; 
  •     } 
  •  
  •     public String getStu_info() { 
  •         return stu_info; 
  •     } 
  •  
  •     public void setStu_info(String stu_info) { 
  •         this.stu_info = stu_info; 
  •     } 
  •  
  •     public String getStu_sex() { 
  •         return stu_sex; 
  •     } 
  •  
  •     public void setStu_sex(String stu_sex) { 
  •         this.stu_sex = stu_sex; 
  •     } 
  •  
  •     @Override 
  •     public int hashCode() { 
  •         final int PRIME = 31
  •         int result = 1
  •         result = PRIME * result + ((stu_id == null) ? 0 : stu_id.hashCode()); 
  •         return result; 
  •     } 
  •  
  •     @Override 
  •     public boolean equals(Object obj) { 
  •         if (this == obj) 
  •             return true
  •         if (obj == null
  •             return false
  •         if (getClass() != obj.getClass()) 
  •             return false
  •         final Student other = (Student) obj; 
  •         if (stu_id == null) { 
  •             if (other.stu_id != null
  •                 return false
  •         } else if (!stu_id.equals(other.stu_id)) 
  •             return false
  •         return true
  •     } 
  •  
  • @Entity public class Student {private Integer stu_id;private String stu_name;private String stu_sex;private Integer stu_age;private String stu_info;@Id@GeneratedValue(strategy = GenerationType.AUTO)public Integer getStu_id() {return stu_id;}public void setStu_id(Integer stu_id) {this.stu_id = stu_id;}@Column(nullable = false)public String getStu_name() {return stu_name;}public void setStu_name(String stu_name) {this.stu_name = stu_name;}public Integer getStu_age() {return stu_age;}public void setStu_age(Integer stu_age) {this.stu_age = stu_age;}public String getStu_info() {return stu_info;}public void setStu_info(String stu_info) {this.stu_info = stu_info;}public String getStu_sex() {return stu_sex;}public void setStu_sex(String stu_sex) {this.stu_sex = stu_sex;}@Overridepublic int hashCode() {final int PRIME = 31;int result = 1;result = PRIME * result + ((stu_id == null) ? 0 : stu_id.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;final Student other = (Student) obj;if (stu_id == null) {if (other.stu_id != null)return false;} else if (!stu_id.equals(other.stu_id))return false;return true;}}

    4,构建我们的DAO接口及实现:

    Java代码
  • public interface StudentDao { 
  •     public void save(Student stu); 
  •  
  •     public void delete(Integer stu_id); 
  •  
  •     public void update(Student stu); 
  •  
  •     public Student getStudentByPK(Integer stu_id); 
  •  
  •     public List<Student> queryAll(); 
  • public interface StudentDao {public void save(Student stu);public void delete(Integer stu_id);public void update(Student stu);public Student getStudentByPK(Integer stu_id);public List<Student> queryAll(); }

    Java代码
  • public class StudentDAOImple implements StudentDao { 
  •     @PersistenceContext 
  •     EntityManager em; 
  •  
  •     public void save(Student stu) { 
  •         em.persist(stu); 
  •     } 
  •  
  •     public void delete(Integer stu_id) { 
  •         em.remove(em.getReference(Student.class, stu_id)); 
  •     } 
  •  
  •     public void update(Student stu) { 
  •         em.merge(stu); 
  •     } 
  •  
  •     public Student getStudentByPK(Integer stu_id) { 
  •         return em.find(Student.class, stu_id); 
  •     } 
  •  
  •     public List<Student> queryAll() { 
  •         return em.createQuery("select s from Student s").getResultList(); 
  •     } 
  •  
  • public class StudentDAOImple implements StudentDao {@PersistenceContextEntityManager em;public void save(Student stu) {em.persist(stu);}public void delete(Integer stu_id) {em.remove(em.getReference(Student.class, stu_id));}public void update(Student stu) {em.merge(stu);}public Student getStudentByPK(Integer stu_id) {return em.find(Student.class, stu_id);}public List<Student> queryAll() {return em.createQuery("select s from Student s").getResultList();}}

    5,service的接口及实现:

    Java代码
  • @Transactional 
  • public interface StudentService { 
  •  
  •     public void save(Student stu); 
  •  
  •     public void delete(Integer stu_id); 
  •  
  •     public void update(Student stu); 
  •  
  •     @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true
  •     public Student getStudentByPK(Integer stu_id); 
  •  
  •     @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true
  •     public List<Student> queryAll(); 
  •  
  • @Transactional public interface StudentService {public void save(Student stu);public void delete(Integer stu_id);public void update(Student stu);@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)public Student getStudentByPK(Integer stu_id);@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)public List<Student> queryAll();}

    Java代码
  • public class StudentServiceImple implements StudentService { 
  •      
  •     private StudentDao studao; 
  •      
  •     public void delete(Integer stu_id) { 
  •         studao.delete(stu_id); 
  •     } 
  •  
  •     public Student getStudentByPK(Integer stu_id) { 
  •         return studao.getStudentByPK(stu_id); 
  •     } 
  •  
  •     public List<Student> queryAll() { 
  •         return studao.queryAll(); 
  •     } 
  •  
  •     public void save(Student stu) { 
  •         studao.save(stu); 
  •     } 
  •  
  •     public void update(Student stu) { 
  •         studao.update(stu); 
  •     } 
  •  
  •     public void setStudao(StudentDao studao) { 
  •         this.studao = studao; 
  •     } 
  •  
  • public class StudentServiceImple implements StudentService {private StudentDao studao;public void delete(Integer stu_id) {studao.delete(stu_id);}public Student getStudentByPK(Integer stu_id) {return studao.getStudentByPK(stu_id);}public List<Student> queryAll() {return studao.queryAll();}public void save(Student stu) {studao.save(stu);}public void update(Student stu) {studao.update(stu);}public void setStudao(StudentDao studao) {this.studao = studao;}}

    事务只需@Transactional及可,Spring2.5自动帮我们提供事务,事务配置在我们service中。

    6,测试我们的service:

    Java代码
  • public class StudentServiceTest extends TestCase { 
  •  
  •     public void testSave() { 
  •         ApplicationContext context = new ClassPathXmlApplicationContext( 
  •                 "beans.xml"); 
  •         StudentService stuMght = (StudentService) context 
  •                 .getBean("studentSerivce"); 
  •         Student stu = new Student(); 
  •         stu.setStu_name("xiaobo"); 
  •         stu.setStu_age(22); 
  •         stu.setStu_sex("男"); 
  •         stu.setStu_info("C++"); 
  •         stuMght.save(stu); 
  •         System.out.println(stu); 
  •     } 
  •  
  •     public void testDelete() { 
  •         ApplicationContext context = new ClassPathXmlApplicationContext( 
  •                 "beans.xml"); 
  •         StudentService stuMght = (StudentService) context 
  •                 .getBean("studentSerivce"); 
  •         stuMght.delete(3); 
  •     } 
  •  
  •     public void testUpdate() { 
  •         ApplicationContext context = new ClassPathXmlApplicationContext( 
  •                 "beans.xml"); 
  •         StudentService stuMght = (StudentService) context 
  •                 .getBean("studentSerivce"); 
  •         Student stu = stuMght.getStudentByPK(4); 
  •         stu.setStu_age(23); 
  •         stuMght.update(stu); 
  •     } 
  •  
  •     public void testGetStudentByPK() { 
  •         ApplicationContext context = new ClassPathXmlApplicationContext( 
  •                 "beans.xml"); 
  •         StudentService stuMght = (StudentService) context 
  •                 .getBean("studentSerivce"); 
  •         Student stu = stuMght.getStudentByPK(5); 
  •         System.out.println(stu); 
  •     } 
  •  
  •     public void testQueryAll() { 
  •         ApplicationContext context = new ClassPathXmlApplicationContext( 
  •                 "beans.xml"); 
  •         StudentService stuMght = (StudentService) context 
  •                 .getBean("studentSerivce"); 
  •         List<Student> stuList = stuMght.queryAll(); 
  •         for (Student stu : stuList) { 
  •             System.out.println(stu); 
  •         } 
  •     } 
  •  
  • 总结

    以上是生活随笔为你收集整理的Spring2.5整合JPA的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。