千家信息网

在Spring框架中如何集成JPA实例

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关在Spring框架中如何集成JPA实例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Hibernate 3.2支持JPA注解,Sprin
千家信息网最后更新 2026年11月02日在Spring框架中如何集成JPA实例

这篇文章将为大家详细讲解有关在Spring框架中如何集成JPA实例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Hibernate 3.2支持JPA注解,Spring集成JPA是可选的。

实体类MyUser,使用JPA注解实现到数据库表myUser的映射,如下所示:

   package org.shirdrn.entity;
import java.util.Date;
import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Transient;
@Entitypublic class MyUser {
private Long id;private String userName;private String password;private String gender;private Integer age;private Integer birthYear;private String addr;private String email;
@Id@GeneratedValue(strategy = GenerationType.IDENTITY)public Long getId() {return id;}
public void setId(Long id) {this.id = id;}
@Column(name="userName")public String getUserName() {return userName;}
public void setUserName(String userName) {this.userName = userName;}
@Column(name="password")public String getPassword() {return password;}
public void setPassword(String password) {this.password = password;}
@Column(name="gender")public String getGender() {return gender;}
public void setGender(String gender) {this.gender = gender;}
@Column(name="age")public Integer getAge() {return age;}
public void setAge(Integer age) {this.age = age;}
@Column(name="addr")public String getAddr() {return addr;}
public void setAddr(String addr) {this.addr = addr;}
@Column(name="email")public String getEmail() {return email;}
public void setEmail(String email) {this.email = email;}
@Transientpublic Integer getBirthYear() {return new Integer(2008-age);}
public void setBirthYear(Integer age) {this.birthYear = new Integer(2008-age);}}


其中,birthYear不是数据库中的字段,使用JPA的@Transient注解,在映射的时候,会忽略掉该成员。

持久层DAO接口如下:

   package org.shirdrn.dao;
import java.util.List;
import org.shirdrn.entity.MyUser;import org.springframework.transaction.annotation.Transactional;
@Transactionalpublic interface MyUserDAO {public void createMyUser(MyUser myUser);public void deleteMyUser(MyUser myUser);public void updateMyUser(MyUser myUser);public List


这里,使用了JPA注解,声明事务。

DAO实现类,如下所示:

    package org.shirdrn.dao.impl;
import java.util.List;
import org.shirdrn.dao.MyUserDAO;import org.shirdrn.entity.MyUser;import org.springframework.orm.jpa.support.JpaDaoSupport;
public class MyUserDAOImpl extends JpaDaoSupport implements MyUserDAO {
public void createMyUser(MyUser myUser) {getJpaTemplate().persist(myUser);}
public void deleteMyUser(MyUser myUser) {MyUser dbMyUser = getJpaTemplate().find(MyUser.class, myUser.getId());getJpaTemplate().remove(dbMyUser);}
public void updateMyUser(MyUser myUser) {MyUser dbMyUser = getJpaTemplate().find(MyUser.class, myUser.getId());if(myUser.getUserName() != null){dbMyUser.setUserName(myUser.getUserName());}if(myUser.getAddr() != null){dbMyUser.setAddr(myUser.getAddr());}getJpaTemplate().merge(dbMyUser);}
@SuppressWarnings("unchecked")public List
@SuppressWarnings("unchecked")public List


因为继承了JpaDaoSupport,索引需要获取一个JpaTemplate来实现访问数据库,在Spring的配置文件中要注入一个org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean。

Spring的配置文件applicationContext.xml的内容如下所示:

   



















abstract="false"lazy-init="default"autowire="default"
dependency-check="default">



 


在META-INF目录下,还要加一个persistence.xml配置文件,如下所示:

    

org.hibernate.ejb.HibernatePersistence
org.shirdrn.entity.MyUser



接着,对增删改查操作进行测试,如下所示:

插入记录:

   packageorg.shirdrn.test;
importorg.shirdrn.dao.MyUserDAO;importorg.shirdrn.entity.MyUser;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;
publicclassTestCreateMyUser{
publicstaticvoidmain(String[]args){MyUserDAOmyUserDAO=(MyUserDAO)ctx.getBean("myUserDAOImpl");MyUsermyUser=newMyUser();myUser.setUserName("JohnXa");myUser.setPassword("123456");myUser.setGender("男");myUser.setAge(newInteger(25));myUser.setAddr("NewYork");myUser.setEmail("john@hotmail.com");myUserDAO.createMyUser(myUser);}}


删除记录:

    packageorg.shirdrn.test;
importorg.shirdrn.dao.MyUserDAO;importorg.shirdrn.entity.MyUser;importorg.springframework.context.ApplicationContext;importorg.springframework.ClassPathXmlApplicationContext;
publicclassTestDeleteMyUser{publicstaticvoidmain(String[]args){ApplicationContextctx=newClassPathXml("applicationContext.xml");MyUserDAOmyUserDAO=(MyUserDAO)ctx.getBean("myUserDAOImpl");MyUsermyUser=newMyUser();myUser.setId(newLong(29));myUserDAO.deleteMyUser(myUser);


修改记录:

    packageorg.shirdrn.test;
importorg.shirdrn.dao.MyUserDAO;importorg.shirdrn.entity.MyUser;importorg.springframework.context.ApplicationContext;importorg.springframework.context.ClassPathXmlApplicationContext;

publicclassTestUpdateMyUser{
publicstaticvoidmain(String[]args){
ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext.xml");
MyUserDAOmyUserDAO=(MyUserDAO)ctx.getBean("myUserDAOImpl");
MyUsermyUser=newMyUser();
myUser.setId(newLong(28));
myUser.setAddr("北京市");
myUserDAO.updateMyUser(myUser);
}
}


查询记录:

   packageorg.shirdrn.test;
importjava.util.List;
importorg.shirdrn.dao.MyUserDAO;importorg.shirdrn.entity.MyUser;importorg.springframework.context.ApplicationContext;importorg.springframework.context.ClassPathXmlApplicationContext;
publicclassTestQueryAllMyUser{publicstaticvoidmain(String[]args){ApplicationContextctx=newClassPathXmContext("applicationContext.xml");MyUserDAOmyUserDAO=(MyUserDAO)ctx.getBean("myUserDAOImpl");List

关于"在Spring框架中如何集成JPA实例"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

注解 数据 数据库 文件 篇文章 配置 实例 框架 内容 更多 不错 实用 事务 字段 实体 成员 接口 文章 时候 目录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是不是新科技 互联网科技公司税收优惠 互联网巨头反垄断金融科技 互联网科技社 以房互联网科技 唐信互联网科技 人人互联网科技是培训 深圳前海聚择互联网科技有限公司 成都铂石互联网科技做什么的 注册互联网科技公司经营范围大全 深圳市优智互联网科技有限公司 如何创新互联网科技 深圳市罗太互联网科技有限公司 卓翼科技产业互联网合作 保险科技服务互联网营销体系 互联网科技资金流入 世界互联网科技成果奖 第三届互联网大会安防黑科技 保山浩联互联网科技有限公司 科技美学互联网 艺术 广东猪兼强互联网科技有限公司 今日互联网科技 南京欣网互联网科技 未来五年的互联网科技 互联网金融科技展 互联网科技人工智能实验室 杭州披云加互联网科技有限公司 西安有哪些互联网高科技企业 承德科技产业互联网平台 广州全民伙伴互联网科技有限公司
0