`
jxd_zxf
  • 浏览: 231794 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring+hibernate jpa(一)

    博客分类:
  • SSH
阅读更多

关于spring+hibernate JPA的一个例子

      通过spring配置来实现对数据库的访问和对事务的管理

简单的对一张表(table)的操作

实体类:

User.java

package domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;


/**
 * User generated by MyEclipse Persistence Tools
 */
@Entity
@Table(name = "user", catalog = "shopping")
@NamedQueries(value = {@NamedQuery(name = "User.findAllUsers", query = "from User")})
public class User implements java.io.Serializable {

 // Fields

 /**
  * 
  */
 private static final long serialVersionUID = 2172281412405163597L;
    @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 private Integer id;

 private String name;

 private String pswd;

 private String email;

 // Constructors

 /** default constructor */
 public User() {
 }

 /** full constructor */
 public User(Integer id, String name, String pswd, String email) {
  this.id = id;
  this.name = name;
  this.pswd = pswd;
  this.email = email;
 }

 // Property accessors
 @Id
 @Column(name = "ID", unique = true, nullable = false, insertable = true, updatable = true)
 public Integer getId() {
  return this.id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 @Column(name = "NAME", unique = false, nullable = false, insertable = true, updatable = true, length = 30)
 public String getName() {
  return this.name;
 }

 public void setName(String name) {
  this.name = name;
 }

 @Column(name = "PSWD", unique = false, nullable = false, insertable = true, updatable = true, length = 45)
 public String getPswd() {
  return this.pswd;
 }

 public void setPswd(String pswd) {
  this.pswd = pswd;
 }

 @Column(name = "EMAIL", unique = false, nullable = false, insertable = true, updatable = true, length = 60)
 public String getEmail() {
  return this.email;
 }

 public void setEmail(String email) {
  this.email = email;
 }

}

 

Userdao.java
package com;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceException;
import javax.persistence.Query;

import org.springframework.orm.jpa.JpaCallback;
import org.springframework.orm.jpa.JpaTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import domain.User;

@Repository
public class Userdao {

 private EntityManagerFactory entityManagerFactory;

 public Userdao() {
 }

 protected JpaTemplate getJpaTemplate() {
  return new JpaTemplate(this.entityManagerFactory);
 }

 @Transactional
 // 声明为事务
 public void createUser(User user) {
  final JpaTemplate jpaTemplate = getJpaTemplate();
  jpaTemplate.persist(user);
 }

 @Transactional
 // 声明为事务
 public void updateAndsaveUser(User user) {
  final JpaTemplate jpaTemplate = getJpaTemplate();
  user = jpaTemplate.merge(user);
  System.out.println("修改完成");
 }

 @Transactional
 public void deleteUser(User user) {// 注意与deleteUserById()方法的比较
  final JpaTemplate jpaTemplate = getJpaTemplate();// 下面为什么没有用user
  // =jpaTemplate.merge(user);
  // 是因为下面的查找和删除都在一个事务中,user一直处于managed状态
  user = jpaTemplate.merge(user); // change bean from detacthed to
  // managed;
  jpaTemplate.remove(user);
 }

 public User findUserById(Integer id) {
  final JpaTemplate jpaTemplate = getJpaTemplate();
  return jpaTemplate.find(User.class, id);
 }

 @Transactional
 // 声明事务
 public boolean deleteAllUsers() {
  final JpaTemplate jpaTemplate = getJpaTemplate();
  return (Boolean) jpaTemplate.execute(new JpaCallback() {

   public Object doInJpa(EntityManager em) throws PersistenceException {
    Query q = em.createNativeQuery("Delete from User");
    if (q.executeUpdate() == 0)
     return Boolean.TRUE;
    else
     return Boolean.FALSE;
   }
  });
 }

 public List findAllUsers() {
  final JpaTemplate jpaTemplate = getJpaTemplate();
  return jpaTemplate.findByNamedQuery("User.findAllUsers");
 }

 @Transactional
 // 事务声明 删除操作必须在事务中才能完成
 public boolean deleteUserById(Integer id) {
  User user = null;
  final JpaTemplate jpaTemplate = getJpaTemplate();
  user = jpaTemplate.find(User.class, id);
  if (user != null) {
   jpaTemplate.remove(user);
   System.out.println("删除用户:" + user.getName() + "(id=" + user.getId()
     + ")");
   return true;
  } else {
   System.out.println("无法删除用户(id=" + id + ")");
   return false;
  }

 }

 public void setEntityManagerFactory(
   EntityManagerFactory entityManagerFactory) {
  this.entityManagerFactory = entityManagerFactory;
 }
}

 
分享到:
评论

相关推荐

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA

    在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...

    spring+springMVC+jpa+hibernate框架整合

    在IT领域,构建高效、可扩展的Web应用是至关重要的,而"spring+springMVC+jpa+hibernate框架整合"就是一个常见的解决方案。这个整合涉及到四个关键的技术栈:Spring框架、SpringMVC、JPA(Java Persistence API)...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境的搭建是一个非常重要的步骤。本文将详细介绍如何在 Struts2+Spring+Hibernate 框架中搭建 Action 的单元测试环境。 首先,需要了解为什么需要对 ...

    spring+hibernate+JPA+BoneCP

    此项目是spring+hibernate+JPA+BoneCP的大整合。所用的技术比较多,如Spring的IOC,AOP,Transactiion,Annotation,Spring_JUnit_Test及Log4j;Hibernate的JPA Annotation;BoneCP的数据库连接测等。是很好的学习资料...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    此外,教程可能还会涵盖事务管理的配置,以及如何使用Spring Data JPA进一步简化数据访问层的代码。 整合这三大框架,可以实现高效、灵活且易于维护的Java Web应用。通过注解,开发者可以减少XML配置,提高代码的...

    手动创建 SpringMvc +SpringDataJpa+Hibernate+ freemarker mavenProject+ 环境切换 webDemo

    在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...

    SpringMVC+Spring+SpringDataJPA+Hibernate整合登录的效果

    这是整合SpringMVC+Spring+SpringDataJPA+Hibernate简单的实现登录的功能,用的是mysql数据库,这是一个web Project 如果你用的是JavaEE6那么你要注意bean-validator.jar和weld-osgi-bundle.jar与slf4j的jar包冲突。...

    Spring+Jersey+JPA+Hibernate+MySQL整合

    在Spring+Jersey+JPA+Hibernate的组合中,Hibernate作为JPA的具体实现,负责与MySQL数据库之间的交互。 MySQL是一种广泛使用的开源关系型数据库管理系统,因其高性能、可靠性和易于管理而在Web应用中受到青睐。在这...

    spring3+springmvc+jpa+hibernate多数据源

    "spring3+springmvc+jpa+hibernate多数据源"是一个示例项目,它演示了如何在一个应用中集成Spring 3、Spring MVC、JPA 2.0以及Hibernate,以实现对多个数据源的支持。下面将详细介绍这些技术及其集成的关键点。 **...

    spring+springmvc+hibernate+jpa搭建

    在IT行业中,构建一个基于Spring、SpringMVC、Hibernate和JPA的开发环境是常见的任务,这四个组件都是Java企业级应用开发中的重要工具。让我们深入探讨这些技术以及如何将它们整合在一起搭建一个完整的开发环境。 *...

    车辆管理系统(struts+hibernate+spring+oracle).rar

    车辆管理系统(struts+hibernate+spring+oracle).rar 对​公​务​用​车​进​行​档​案​、​费​用​、​调​度​、​维​修​、​安​全​、​运​行​等​全​方​位​的​管​理​和​统​计​,​以​方​便​...

    Spring + JPA + Hibernate配置

    标题“Spring + JPA + Hibernate配置”涉及到的是Java开发中常用的三个框架——Spring、Java Persistence API (JPA) 和Hibernate的集成与配置。这是一份关于如何将这些框架结合使用的教程或参考资料,可能包含了实现...

    struts+spring+hibernate三大框架整合

    3. **DAO层的实现**:Spring的`HibernateTemplate`或`HibernateOperations`可以简化DAO层的代码,但更推荐使用`HibernateJpaVendorAdapter`配合JPA的`EntityManager`,因为JPA提供了更丰富的ORM功能,并且与多种持久...

    现有Mysql数据库,写Spring + Hibernate的配置文件

    在Maven或Gradle的构建文件中,添加对应的依赖库,如Spring的核心库、Spring ORM模块以及Hibernate的JPA和核心库。确保版本与项目的其他依赖兼容。 接下来,配置Spring的ApplicationContext.xml文件。在这个文件中...

    Spring+SpringMVC+SpringDataJPA+Hibernate

    在本文中,我们将深入探讨"Spring+SpringMVC+SpringDataJPA+Hibernate"这个集成框架,这是一个在Java开发中广泛使用的强大组合,用于构建高效、可扩展的企业级应用程序。 首先,Spring是一个全面的Java应用框架,它...

    spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 案例.rar

    spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 Compass将lucene、Spring、Hibernate三者结合

    Spring+Hibernate+Jpa+Struts2整合实例

    标题 "Spring+Hibernate+Jpa+Struts2整合实例" 描述的是一个综合性的Web开发教程,它将四个关键的Java技术框架集成在一起,用于构建高效的企业级应用程序。这个实例涵盖了Spring作为整体应用的管理框架,Hibernate...

    Spring+hibernate整合源代码

    10. **最佳实践**:在实际项目中,为了提高性能和可维护性,通常会采用 MyBatis 或 JPA 作为更轻量级的数据访问层,而将 Hibernate 作为备用选项,以应对复杂的查询需求。 这个“Spring+hibernate整合源代码”应该...

    maven+springmvc+springjpa+hibernate

    在IT行业中,构建高效、可维护的Web应用是至关重要的,而"Maven+SpringMVC+SpringJPA+Hibernate"的组合就是一个常见的解决方案。这个组合提供了全面的开发工具和技术,帮助开发者快速构建基于Java的Web应用程序。...

    maven+springjpa+hibernate

    在"maven+springjpa+hibernate"的例子中,Maven用于管理项目依赖,包括Spring Data JPA和Hibernate库。 **Spring Data JPA** Spring Data JPA是Spring框架的一部分,它简化了JPA(Java Persistence API)的使用,...

Global site tag (gtag.js) - Google Analytics